WinAPI ja ikkunaan kuva

Seuraa 
Viestejä45973
Liittynyt3.9.2015

Eli kieli on C++ ja miten saisin tehtyä tähän ikkunaan jonku kuvan, mitä kaikkea tarvitaan ja miten tuota koodia muutetaan::

[code:2xkjtwgr]#include

//Määrittää parametrit */
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);

//Tekee luokalle(class) muuttujan nimen */
char szClassName[ ] = "WindowsApp";

int WINAPI WinMain (HINSTANCE hThisInstance,
HINSTANCE hPrevInstance,
LPSTR lpszArgument,
int nFunsterStil)

{
HWND hwnd; /* Ikkunan kahva */
MSG messages; /* Tällä viestit(messages) tallennetaan "application" astuksiin*/
WNDCLASSEX wincl; /* Data rakenne ikkuna luokkaan */

/* Ikkunan rakenne */
wincl.hInstance = hThisInstance;
wincl.lpszClassName = szClassName;
wincl.lpfnWndProc = WindowProcedure; /* Funktiolla kutsutaan ikkunaa */
wincl.style = CS_DBLCLKS; /* Ikkunan tyyli::Catch double-clicks??? */
wincl.cbSize = sizeof (WNDCLASSEX);

/* Käyttää oletus ikonia ja hiiren osoitinta */
wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
wincl.lpszMenuName = NULL; /* Ei valikkoa */
wincl.cbClsExtra = 0; /* Ei extra tavuja ikkuna luokkaan */
wincl.cbWndExtra = 0; /* Ikkunan esimerkki rakenne */
/* Laittaa windowsin normaali tausta värin ikkunan taustalle */
wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;

/* Rekiströi ikkuna luokan, ja lopettaa ohjelman jos epäonnistuu */
if (!RegisterClassEx (&wincl))
return 0;

/* Ikkuna luokka rekisteröity, nyt tehdään ohjelma */
/* Tehdään ikkuna ja siihen asetukset */
hwnd = CreateWindowEx (
0, /* Oletus nolla */
szClassName, /* Ikkunan nimi "Windows App"*/
"Windows App", /* Ikkunan otsikko (ikkunan nimi "Windows App") */
WS_OVERLAPPEDWINDOW, /* Ikkunan oletustyyli( muita asetuksia sanalla "styles") */
CW_USEDEFAULT, /* ikkunan x ( CW_USEDEFAULT = oletusarvo) */
CW_USEDEFAULT, /* ikkunan y ( CW_USEDEFAULT = oletusarvo)*/
544, /* Ikkunan/ohjelman leveys */
375, /* ja korkeus */
HWND_DESKTOP, /* Parent-ikkunan kahva (työpöytä tässä tapauksessa) */
NULL, /* Ei valikkoa */
hThisInstance, /* ohjelman instanssi */
NULL /* Ei ikkunan luomis dataa */
);

/* Tekee ikkunan näkyviin ruudulle */
ShowWindow (hwnd, nFunsterStil);

/* Ajetaan viesti silmukka/looppi(message loop). It will run until GetMessage() returns 0 */
while (GetMessage (&messages, NULL, 0, 0))
{
/* kääntää virtuaali-näppäin viestit merkki viesteihin */
TranslateMessage(&messages);
/* Lähettää viestin (message) WindowProcedurelle */
DispatchMessage(&messages);
}

/* Ohjelman paluu arvo on 0 - Tuo Arvo on PostQuitMessage() gave */
return messages.wParam;
}

/* Tämä funktio kutsuu Windows funktiota DispatchMessage() */

LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message) /* Käsittellään viestit */
{
case WM_DESTROY:
PostQuitMessage (0); /* lähettää WM_QUIT viesti jonolle */
break;
default: /* Palauttaa arvot hwnd, message, wParam, lParam */
return DefWindowProc (hwnd, message, wParam, lParam);
}

return 0;
}[/code:2xkjtwgr]

Koodi on täältä kopioitu:: http://www.ohjelmointiputka.net/keskust ... 62&v=90010

Eli se kuva olis vaikka tehty paintilla ja tiedosto olisi tallenttu bmp -tiedostona.

Kommentit (2)

Vierailija

Ja jos ette muuta koodia tai jaksa alkaa selittää, niin antakaa ees joku vinkki, koska en löytäny googlestakaan englannin kielellä mitään asiaa. Aluksi yritin virittää jotain purkka konstia tuohon:

wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;

kohtaan, mutta en saanu aikaan muuta kuin eri värisiä ikkunoja ja kääntäjä virheitä, kun colour osion otti pois.

Kääntäjänä olis dev-cpp:n g++

Heksu
Seuraa 
Viestejä5462
Liittynyt16.3.2005

Eiköhän se mene vähän jotenkin niin, että otat vastaan WM_PAINT viestejä ikkunan proseduurissa ja piirrät sitten kuvan GDI:llä... Otat kiinni Device Contextista ja kutsut GDI-rajapinnan funktioita. Kannattaisi varmaan käydä läpi joku tutoriaali. Pistä vaikka kuukkeliin hakusanat "windows api gdi tutorial" niin jo löytyy ohjeita vaikka kuin mahrottomasti.

Uusimmat

Suosituimmat