#include // otsikkotiedoston lisäys #include // yleisten kontrollien otsikkotiedoston lisäys LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ; // ikkunaproseduurin esittely HINSTANCE hInstance; // globaali ohjelman ilmentymän kahva int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { static char szAppName[] = "liukuedistys" ; // 'ohjelman nimi' HWND hwnd ; // kahvamuuttuja MSG msg ; // sanomastrukstuuri WNDCLASSEX wndclass ; // ikkunan luokkastruktuuri 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 ; // lomakkeen kahva wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ; // ikoni wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ; // kursori wndclass.hbrBackground = (HBRUSH) COLOR_WINDOW ; // taustaväri wndclass.lpszMenuName = NULL ; // valikon kahva wndclass.lpszClassName = szAppName ; // ikkunan luokan nimi wndclass.hIconSm = LoadIcon (NULL, IDI_APPLICATION) ; // pieni ikoni RegisterClassEx (&wndclass) ; // ikkunan luokan rekisteröinti hwnd = CreateWindow (szAppName, // ikkunan luokan nimi "Liukusäädin & edistyspalkki", // ikkunan otsikko WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU, // ikkunan tyyli CW_USEDEFAULT, // x-positio aluksi CW_USEDEFAULT, // y-positio aluksi 500, // leveys aluksi 300, // korkeus aluksi NULL, // emoikkunan kahva NULL, // ikkunan valikon kahva hInstance, // ohjelman ilmentymän kahva NULL) ; // luontiparametrit InitCommonControls(); // kontrollit ovat yleisiä kontrolleja ja vaativat alustuksen tällä funktiolla ShowWindow (hwnd, iCmdShow) ; // ikkunan piirto UpdateWindow (hwnd) ; // ikkunan päivitys while (GetMessage (&msg, NULL, 0, 0)) // sanomasilmukan alku { TranslateMessage (&msg) ; // viestien käsittely ja... DispatchMessage (&msg) ; // ...ikkunaproseduurin kutsu } return msg.wParam ; // käyttöjärjestelmälle palautettava arvo } LRESULT CALLBACK WndProc (HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam) { static HWND hwndTrackbar, hwndProgress ; // kahvat switch (iMsg) // sanomien käsittelyrakenne { case WM_CREATE: // initialisaatiosanoma CreateWindow ("button", NULL, WS_CHILD|WS_VISIBLE|BS_GROUPBOX, 10, 10, 472, 255, hwnd, (HMENU) 0, hInstance, NULL) ; // koristelaatikko, koko asetetaan WM_SIZE sanomassa hwndTrackbar = CreateWindowEx (NULL, TRACKBAR_CLASS, NULL, WS_CHILD|WS_VISIBLE|TBS_HORZ|TBS_AUTOTICKS|TBS_BOTH, 80, 100, 312, 40, hwnd, (HMENU) 1, hInstance, NULL) ; // liukusäädin SendMessage (hwndTrackbar, TBM_SETRANGE, TRUE, MAKELONG(0, 20)) ; // asetetaan väliksi 0-20 SendMessage (hwndTrackbar, TBM_SETPOS, TRUE, 5) ; // asetetaan alkuarvoksi 5 hwndProgress = CreateWindowEx (NULL, PROGRESS_CLASS, NULL, WS_CHILD|WS_VISIBLE, 20, 170, 452, 15, hwnd, (HMENU) 2, hInstance, NULL) ; // edistyspalkki SendMessage (hwndProgress, PBM_SETRANGE, TRUE, MAKELONG(0, 100)) ; // asetetaan väliksi 0-100 return 0 ; case WM_NOTIFY : // yleiset kontrollit lähettävät WM_NOTIFY sanomia SendMessage(hwndProgress, PBM_SETPOS, 5 * SendMessage(hwndTrackbar, TBM_GETPOS, 0, 0), 0) ; // haetaan liukusäätimen asema ja lähetetään se * 5 edistyspalkille return 0 ; case WM_DESTROY : // lopetussanoma PostQuitMessage (0) ; // lopetusviesti Windowsille return 0 ; // pois ikkunaproseduurista } return DefWindowProc (hwnd, iMsg, wParam, lParam) ; // sanomien oletuskäsittely }