#include #include "resource.h" // resurssieditorin generoima otsikkotiedosto LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ; HINSTANCE hInstance; HMENU hMenu ; // menun kahva int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { static char szAppName[] = "Resurssit" ; HWND hwnd ; MSG msg ; WNDCLASSEX wndclass ; wndclass.cbSize = sizeof (wndclass) ; wndclass.style = CS_HREDRAW | CS_VREDRAW ; wndclass.lpfnWndProc = WndProc ; wndclass.cbClsExtra = 0 ; wndclass.cbWndExtra = 0 ; wndclass.hInstance = hInstance ; wndclass.hIcon = LoadIcon (hInstance, MAKEINTRESOURCE(IDI_OMAIKONI)) ; // ikoni wndclass.hCursor = LoadCursor (hInstance, MAKEINTRESOURCE(IDC_NUOLIKURSORI)) ; // kursori wndclass.hbrBackground = (HBRUSH) COLOR_WINDOW ; wndclass.lpszMenuName = NULL ; // valikon kahva wndclass.lpszClassName = szAppName ; wndclass.hIconSm = LoadIcon (hInstance, MAKEINTRESOURCE(IDI_OMAIKONI)) ; // pieni ikoni RegisterClassEx (&wndclass) ; hMenu = LoadMenu(hInstance, MAKEINTRESOURCE(IDR_PAAMENU)); // menun kahva talteen hwnd = CreateWindow (szAppName, "Resurssit", WS_OVERLAPPED | WS_SYSMENU | WS_CAPTION, CW_USEDEFAULT, CW_USEDEFAULT, 500, 300, NULL, hMenu, // ikkunan valikon kahva hInstance, NULL) ; ShowWindow (hwnd, iCmdShow) ; UpdateWindow (hwnd) ; while (GetMessage (&msg, NULL, 0, 0)) { TranslateMessage (&msg) ; DispatchMessage (&msg) ; } return msg.wParam ; } LRESULT CALLBACK WndProc (HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam) { static HWND hwndGroupbox, hwndStatic, hwndButton2 ; // kahvat long ruksi ; // apumuuttuja static HMENU hPopUpMenu ; // pullahdusvalikko switch (iMsg) { case WM_CREATE: hwndGroupbox = CreateWindow("button", NULL, WS_CHILD | WS_VISIBLE | BS_GROUPBOX, 10, 0, 472, 245, hwnd, (HMENU) 0, hInstance, NULL) ; // kehys hwndStatic = CreateWindowEx(WS_EX_STATICEDGE, "static", "Aloita", WS_CHILD | WS_VISIBLE | SS_CENTER, 20, 215, 452, 20, hwnd, (HMENU) 1, hInstance, NULL) ; // tekstilaatikko hPopUpMenu = LoadMenu(hInstance, MAKEINTRESOURCE(IDR_POPUPMENU)) ; hPopUpMenu = GetSubMenu (hPopUpMenu, 0) ; return 0 ; case WM_MENUSELECT : switch (LOWORD(wParam)) // menukohta palatuu tässä { case ID_CHECKEDVALIKKO_CHECKED1 : case ID_CHECKEDVALIKKO_CHECKED2 : case ID_CHECKEDVALIKKO_CHECKED3 : SetWindowText (hwndStatic, "Checked valikko") ; // Checked valikkoa selataan return 0; case ID_INACTIVEVALIKKO_INACTIVE1 : case ID_INACTIVEVALIKKO_INACTIVE2 : case ID_INACTIVEVALIKKO_INACTIVE3 : SetWindowText (hwndStatic, "Inactive valikko") ; // Inactive valikkoa selataan return 0 ; case ID_FILE_VALINTA1 : case ID_FILE_VALINTA2 : case ID_FILE_VALINTA3 : SetWindowText (hwndStatic, "File valikko ja valinta kohta") ; // File valikkoa selataan return 0 ; case ID_FILE_EXIT : SetWindowText (hwndStatic, "File valikko ja lopetus kohta") ; // Exit kohtaa selataan } return 0; case WM_COMMAND : switch (LOWORD(wParam)) // menukohta palautuu tässä { case ID_FILE_EXIT : SendMessage (hwnd, WM_CLOSE, 0, 0) ; // suljetaan ohjelma return 0; case ID_FILE_VALINTA1 : SetWindowText (hwndStatic, "Valinta1 valittu") ; // tulostetaan aputeksti return 0; case ID_FILE_VALINTA2 : SetWindowText (hwndStatic, "Valinta2 valittu") ; // tulostetaan aputeksti return 0; case ID_CHECKEDVALIKKO_CHECKED1 : ruksi = GetMenuState (hMenu, LOWORD(wParam), MF_BYCOMMAND) ; if (ruksi == MF_CHECKED) // tutkitaan ruksin tila ja vaihdetaan se CheckMenuItem (hMenu, LOWORD(wParam), MF_UNCHECKED ) ; else CheckMenuItem (hMenu, LOWORD(wParam), MF_CHECKED ) ; SetWindowText (hwndStatic, "Checked1 valittu ja merkki vaihdettu") ; // tulostetaan aputeksti return 0; case ID_CHECKEDVALIKKO_CHECKED2 : ruksi = GetMenuState (hMenu, LOWORD(wParam), MF_BYCOMMAND) ; if (ruksi == MF_CHECKED) // tutkitaan ruksin tila ja vaihdetaan se CheckMenuItem (hMenu, LOWORD(wParam), MF_UNCHECKED ) ; else CheckMenuItem (hMenu, LOWORD(wParam), MF_CHECKED ) ; SetWindowText (hwndStatic, "Checked2 valittu ja merkki vaihdettu") ; // tulostetaan aputeksti return 0 ; } case WM_RBUTTONDOWN : // oikeanpuoleinen hiiren nappi painettu POINT point ; point.x = LOWORD(lParam) ; // x-koordinaatti point.y = HIWORD(lParam) ; // y-koordinaatti ClientToScreen (hwnd, &point) ; // koordinaattimuunnos TrackPopupMenu (hPopUpMenu, 0, point.x, point.y, 0, hwnd, NULL) ; // menun esitys return 0 ; case WM_DESTROY : PostQuitMessage (0) ; return 0 ; } return DefWindowProc (hwnd, iMsg, wParam, lParam) ; }