Win32 tehtäviä syventävät vastaus5
Mureakuha
Tehtävä:
Kirjoita ohjelma, jossa on valikko ja sitä kautta mahdollisuus avata modaalinen dialogi 'Tietoja ohjelmasta'. Tee valikko ja dialogi kääntäjän resurssieditorilla.
[muokkaa]
DIALOGI.CPP
#include <windows.h> #include "resource.h" LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM); BOOL CALLBACK TietojaDlgProc (HWND, UINT, WPARAM, LPARAM); HINSTANCE hInstance; int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { 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 (NULL, IDI_APPLICATION); wndclass.hCursor = LoadCursor (NULL, IDC_ARROW); wndclass.hbrBackground = (HBRUSH) COLOR_WINDOW; wndclass.lpszMenuName = MAKEINTRESOURCE(IDR_PAAMENU); wndclass.lpszClassName = "OmaLuokka"; wndclass.hIconSm = LoadIcon (NULL, IDI_APPLICATION); RegisterClassEx (&wndclass); HWND hwnd = CreateWindow ("OmaLuokka", "Dialogi", WS_OVERLAPPED | WS_SYSMENU | WS_CAPTION, CW_USEDEFAULT, CW_USEDEFAULT, 500, 300, NULL, NULL, 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) { switch (iMsg) // sanomien käsittelyrakenne { case WM_CREATE : // initialisaatio CreateWindowEx(NULL, "button", NULL, WS_CHILD | WS_VISIBLE | BS_GROUPBOX, 10, 0, 472, 245, hwnd, (HMENU) 0, hInstance, NULL); // kehys return 0; // pois ikkunaproseduurista case WM_COMMAND: // kontrollien sanomat switch (LOWORD(wParam)) { case ID_OHJE_TIETOJAOHJELMASTA: // menukohta DialogBox (hInstance, MAKEINTRESOURCE(IDD_DIALOGI), hwnd, TietojaDlgProc); // dialogin näyttö } return 0; // pois ikkunaproseduurista case WM_DESTROY: // lopetus PostQuitMessage (0); // lopetusviesti return 0; // pois ikkunaproseduurista } return DefWindowProc (hwnd, iMsg, wParam, lParam); // sanomien oletuskäsittely } BOOL CALLBACK TietojaDlgProc (HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam) { switch (iMsg) { case WM_INITDIALOG: // initialisaatio SetFocus(GetDlgItem(hwnd, IDOK)); // fokus painonappiin return TRUE; case WM_COMMAND: EndDialog(hwnd, 0); // dialogi pois return TRUE; } return FALSE; }
[muokkaa]
RESOURCE.H
//{{NO_DEPENDENCIES}} // Microsoft Developer Studio generated include file. // Used by resurssit.rc // #define IDR_PAAMENU 101 #define IDD_DIALOGI 102 #define ID_OHJE_TIETOJAOHJELMASTA 40001 // Next default values for new objects // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 103 #define _APS_NEXT_COMMAND_VALUE 40002 #define _APS_NEXT_CONTROL_VALUE 1000 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif
[muokkaa]
RESURSSIT.RC
//Microsoft Developer Studio generated resource script. // #include "resource.h" #define APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 2 resource. // #include "afxres.h" ///////////////////////////////////////////////////////////////////////////// #undef APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // Finnish resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_FIN) #ifdef _WIN32 LANGUAGE LANG_FINNISH, SUBLANG_DEFAULT #pragma code_page(1252) #endif //_WIN32 ///////////////////////////////////////////////////////////////////////////// // // Menu // IDR_PAAMENU MENU DISCARDABLE BEGIN POPUP "&Ohje" BEGIN MENUITEM "&Tietoja ohjelmasta...", ID_OHJE_TIETOJAOHJELMASTA END END #ifdef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // TEXTINCLUDE // 1 TEXTINCLUDE DISCARDABLE BEGIN "resource.h\0" END 2 TEXTINCLUDE DISCARDABLE BEGIN "#include ""afxres.h""\r\n" "\0" END 3 TEXTINCLUDE DISCARDABLE BEGIN "\r\n" "\0" END #endif // APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // Dialog // IDD_DIALOGI DIALOG DISCARDABLE 20, 20, 138, 61 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Tietoja ohjelmasta" FONT 8, "MS Sans Serif" BEGIN DEFPUSHBUTTON "OK",IDOK,43,40,50,14 LTEXT "Modaalinen dialogi.\n\nCopyright © 1999 Petteri Hämäläinen.", IDC_STATIC,7,7,124,26 END ///////////////////////////////////////////////////////////////////////////// // // DESIGNINFO // #ifdef APSTUDIO_INVOKED GUIDELINES DESIGNINFO DISCARDABLE BEGIN IDD_DIALOGI, DIALOG BEGIN LEFTMARGIN, 7 RIGHTMARGIN, 131 TOPMARGIN, 7 BOTTOMMARGIN, 54 END END #endif // APSTUDIO_INVOKED #endif // Finnish resources ///////////////////////////////////////////////////////////////////////////// #ifndef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 3 resource. // ///////////////////////////////////////////////////////////////////////////// #endif // not APSTUDIO_INVOKED
Tämän dokumentin kopiointi, levittäminen sekä muokkaaminen on sallittua GNU Free Documentation Licensen version 1.2 tai uudemman Free Software Foundationin julkaiseman version mukaisesti, ilman muuttumattomuuslauseketta tai kansitekstejä. Tätä koskee vastuuvapaus.
Kopio lisenssistä (englanniksi) löytyy täältä.
Kopio lisenssistä (englanniksi) löytyy täältä.
Alkuperäinen (c) Petteri Hämäläinen
