|
Kaikkein
yksinkertaisin ja lyhyin C/Win32 API -ohjelma joka vielä toimii:
#include <windows.h> // otsikkotiedosto
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ; // ikkunaproseduurifunktion esittely
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
MSG msg ; // sanomastrukstuurimuuttujan esittely
WNDCLASSEX wndclass ; // ikkunan luokkastruktuurimuuttujan esittely
wndclass.cbSize = sizeof (wndclass) ; // struktuurin koko
wndclass.style = CS_HREDRAW | CS_VREDRAW ; // ikkunan tyyli
wndclass.lpfnWndProc = WndProc ; // ikkunaproseduurin nimi
wndclass.cbClsExtra = 0 ; // ikkunan luokan sisältä ohjelman...
wndclass.cbWndExtra = 0 ; // ...omaan käyttöön varattua tilaa
wndclass.hInstance = hInstance ; // ohjelman ilmentymän kahva
wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ; // suuri ikoni
wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ; // kursori
wndclass.hbrBackground = (HBRUSH) COLOR_WINDOW ; // taustaväri
wndclass.lpszMenuName = NULL ; // valikon kahva
wndclass.lpszClassName = "OmaLuokka" ; // ikkunan luokan nimi
wndclass.hIconSm = LoadIcon (NULL, IDI_APPLICATION) ; // pieni ikoni
RegisterClassEx (&wndclass) ; // ikkunan luokan rekisteröinti
HWND hwnd = CreateWindow ("OmaLuokka", // ikkunan luokan nimi
"Päivää maailma!", // ikkunan otsikko
WS_OVERLAPPEDWINDOW, // ikkunan tyyli
CW_USEDEFAULT, // x-positio aluksi
CW_USEDEFAULT, // y-positio aluksi
CW_USEDEFAULT, // leveys aluksi
CW_USEDEFAULT, // korkeus aluksi
NULL, // emoikkunan kahva
NULL, // ikkunan valikon kahva
hInstance, // ohjelman ilmentymän kahva
NULL) ; // luontiparametrit
ShowWindow (hwnd, iCmdShow) ; // ikkunan piirto
while (GetMessage (&msg, NULL, 0, 0) == TRUE) // sanomasilmukka
{
TranslateMessage (&msg) ; // sanomien käsittely ja...
DispatchMessage (&msg) ; // ...ikkunaproseduurin kutsu
}
return msg.wParam ; // käyttöjärjestelmälle palautuva arvo
}
LRESULT CALLBACK WndProc (HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam) // ikkunaproseduuri
{
switch (iMsg) // sanomien käsittelyrakenne
{
case WM_DESTROY: // lopetussanoman sanomakäsittelijä
PostQuitMessage (0); // lopetuksen vahvistus
return 0;
}
return DefWindowProc (hwnd, iMsg, wParam, lParam) ; // sanomien oletuskäsittely
}
Tulos:

Tämän
jälkeen lomakkeelle voi tehdä seuraavaa:
- Liikuttaa
otsikkopalkista
- Suurentaa ja
pienentää reunoista
- Maksimoida ja
minimoida oikean yläkulman napeilla ja tuplanapauttamalla
otsikkopalkkia
- Sulkea oikean
yläkulman napilla
- Avata
syteemivalikon vasemmasta yläkulmasta ja suurentaa, pienentää
ja sulkea sieltä
Ohjelman
rakenne:
Windows.h
otsikkotiedoston lisäys
Ikkunaproseduurifunktion esittely |
| WinMain() |
Muuttujien
esittely
Tulevan lomakkeen ominaisuuksien asetus
Lomakkeen piirto annetuilla ominaisuuksilla
Sanomasilmukka (ikkunaproseduurin kutsu) |
| Ikkunaproseduuri |
WM_DESTROY
sanoman käsittely
Määrittelemättömien sanomien käsittely |
|