#include 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[] = "CheckRadio" ; // '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 "Checkbox & Radiobutton", // 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 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 hwndStaticRadio, hwndStaticCheck1, hwndStaticCheck2, hwndButtonRadio, hwndButtonCheck, hwndRadio2, hwndRadio1, hwndCheck2, hwndCheck1; // kahvat switch (iMsg) // sanomien käsittelyrakenne { case WM_CREATE: // initialisaatiosanoma CreateWindow("button", NULL, WS_CHILD|WS_VISIBLE|BS_GROUPBOX, 10, 10, 473, 255, hwnd, (HMENU) 0, hInstance, NULL); // kehys hwndCheck1=CreateWindow("button", "AutoCheck1", WS_CHILD|WS_VISIBLE|BS_AUTOCHECKBOX, 110, 50, 100, 20, hwnd, (HMENU) 1, hInstance, NULL); // Valintaruutu hwndCheck2=CreateWindow("button", "AutoCheck2", WS_CHILD|WS_VISIBLE|BS_AUTOCHECKBOX, 110, 70, 100, 20, hwnd, (HMENU) 2, hInstance, NULL); // Valintaruutu hwndRadio1=CreateWindow("button", "AutoRadio1", WS_CHILD|WS_VISIBLE|BS_AUTORADIOBUTTON, 280, 50, 100, 20, hwnd, (HMENU) 3, hInstance, NULL); // Valintanappi SendMessage(hwndRadio1, BM_SETCHECK, 1, 0); // tehdään oletusvalinta hwndRadio2=CreateWindow("button", "AutoRadio2", WS_CHILD|WS_VISIBLE|BS_AUTORADIOBUTTON, 280, 70, 100, 20, hwnd, (HMENU) 4, hInstance, NULL); // Valintanappi hwndButtonCheck=CreateWindow("button", "Check", WS_CHILD|WS_VISIBLE, 110, 120, 100, 30, hwnd, (HMENU) 5, hInstance, NULL); // painonappi hwndButtonRadio=CreateWindow("button", "Radio", WS_CHILD|WS_VISIBLE, 280, 120, 100, 30, hwnd, (HMENU) 6, hInstance, NULL); // painonappi hwndStaticCheck1=CreateWindowEx(WS_EX_STATICEDGE, "static", "Check1 pois", WS_CHILD|WS_VISIBLE, 110, 170, 100, 20, hwnd, (HMENU) 7, hInstance, NULL); // tekstinlaatikko hwndStaticCheck2=CreateWindowEx(WS_EX_STATICEDGE, "static", "Check2 pois", WS_CHILD|WS_VISIBLE, 110, 200, 100, 20, hwnd, (HMENU) 8, hInstance, NULL); // tekstinlaatikko hwndStaticRadio=CreateWindowEx(WS_EX_STATICEDGE, "static", "Radio1 päällä", WS_CHILD|WS_VISIBLE, 280, 170, 100, 20, hwnd, (HMENU) 9, hInstance, NULL); // tekstinlaatikko return 0 ; case WM_COMMAND: switch HIWORD(wParam) // tapahtumatunnus { case BN_CLICKED: // tapahtumatunnus BN_CLICKED = nappia on painettu if ( LOWORD(wParam) == 5 && SendMessage(hwndCheck1, BM_GETCHECK, 0,0) == TRUE) SetWindowText(hwndStaticCheck1, "Check1 päällä"); // BM_GETCHECK = valintaruudun tila if ( LOWORD(wParam) == 5 && SendMessage(hwndCheck1, BM_GETCHECK, 0,0) == FALSE) SetWindowText(hwndStaticCheck1, "Check1 pois "); if ( LOWORD(wParam) == 5 && SendMessage(hwndCheck2, BM_GETCHECK, 0,0) == TRUE) SetWindowText(hwndStaticCheck2, "Check2 päällä"); // BM_GETCHECK = valintaruudun tila if ( LOWORD(wParam) == 5 && SendMessage(hwndCheck2, BM_GETCHECK, 0,0) == FALSE) SetWindowText(hwndStaticCheck2, "Check2 pois"); if ( LOWORD(wParam) == 6 && SendMessage(hwndRadio1, BM_GETCHECK, 0,0) == TRUE) SetWindowText(hwndStaticRadio, "Radio1 päällä"); // BM_GETCHECK = valintanapin tila if ( LOWORD(wParam) == 6 && SendMessage(hwndRadio2, BM_GETCHECK, 0,0) == TRUE) SetWindowText(hwndStaticRadio, "Radio2 päällä "); } return 0; case WM_DESTROY : // lopetussanoma PostQuitMessage (0) ; // lopetusviesti Windowsille return 0 ; // pois ikkunaproseduurista } return DefWindowProc (hwnd, iMsg, wParam, lParam) ; // sanomien oletuskäsittely }