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.
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++
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.