Podstawy WINAPI - MessageBOX

1 Podstawy WINAPI - MessageBOXTemat: Podstawy WINAPI - Me...
Author: Martyna Góral
0 downloads 0 Views

1 Podstawy WINAPI - MessageBOXTemat: Podstawy WINAPI - MessageBOX

2 Funkcja WinMain #include int WINAPI WinMain( {HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { return 0; }

3 Funkcja MessageBox MessageBox( hWnd, lpText, lpCaption, uType )Argument Znaczenie hWnd uchwyt okna, które jest właścicielem komunikatu. Jeśli okna akurat nie mamy, dajemy tu NULL, co oznacza bezpański komunikat lpText po prostu tekst komunikatu, który wyświetlamy lpCaption tytuł okienka komunikatu. Jeśli damy NULL, zostanie wybrany tytuł domyślny Error uType kombinacja stylów okienka komunikatu

4 Funkcja MessageBox #include int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { MessageBox( NULL, "Witaj świecie", "Moja pierwsza aplikacja", MB_ICONWARNING); return 0; }

5 uType – typy okienek MB_ABORTRETRYIGNORE MB_OK MB_OKCANCELMB_RETRYCANCEL MB_YESNO MB_YESNOCANCEL MB_ICONWARNING MB_ICONINFORMATION MB_ICONQUESTION MB_ICONSTOP lub MB_ICONERROR lub MB_ICONHAND

6 Funkcja MessageBox Funkcja MessageBox zwraca wartości:  O – jeśli nie zadziała (np. brak pamięci) IDABORT – przerwij IDCANCEL – anuluj IDRETRY – ponów IDIGNORE – ignoruj IDNO – nie IDYES – tak IDOK – ok

7 Temat: Podstawy WINAPI - Okno

8 Klasa okna WNDCLASSEX wc; (wc - to nasza nazwa) memset(&wc,0,sizeof(wc)); wc.cbSize = sizeof(WNDCLASSEX); wc.lpfnWndProc = WndProc; wc.hInstance = hInstance; wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); wc.lpszClassName = "WindowClass"; wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); wc.hIconSm =LoadIcon(NULL, IDI_APPLICATION);

9 Klasa okna Pole Znaczenie cbSizeRozmiar struktury w bajtach. Należy tu wpisać sizeof (WINDOWCLASSEX). style Style klasy. lpfnWndProc !!! Wskaźnik do procedury obsługującej okno (o tym później, na razie wpisujemy WndProc) cbClsExtra, cbWndExtra Dodatkowe bajty pamięci dla klasy. hInstance Identyfikator aplikacji, która ma być właścicielem okna (zazwyczaj pierwszy parametr naszej funkcji WinMain) hIcon Ikonka okna - duża ikonka, widać ją kiedy naciśniesz Alt-Tab.

10 Klasa okna Pole Znaczenie dalej … hCursor Kursor myszki. hbrBackgroundTło naszego okienka, czyli jego kolor i wzór. Wybieramy domyślne zdefiniowane. lpszMenuName Nazwa identyfikująca menu naszego okna w pliku zasobów. lpszClassName Nazwa klasy, którą tworzymy. hIconSm Mała ikonka naszej aplikacji.

11 Rejestracja okna if(!RegisterClassEx(&wc)) { MessageBox( NULL, "Window Registration Failed! ", "Error!", MB_ICONEXCLAMATION|MB_OK); return 0; }

12 Budowa okna hwnd = CreateWindowEx( WS_EX_CLIENTEDGE, "WindowClass", "Caption", WS_VISIBLE|WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, x CW_USEDEFAULT, y 640, width 480, height NULL,NULL,hInstance,NULL);

13 Budowa okna Argument Znaczenie dwExStyleParametry okna. WS_EX_WINDOWEDGE, czyli ramki 3D. lpClassName Nazwa klasy okna, którą właśnie zarejestrowaliśmy lpWindowName Napis na pasku tytułowym okienka. dwStyle Style okienka. x, y Pozycja okna. CW_USEDEFAULT - domyślną pozycja. nWidth, nHeight Wymiary okienka. hWndParent Uchwyt okna nadrzędnego. hMenu Uchwyt menu dla naszego okna. NULL – brak menu. hInstance Uchwyt aplikacji, której przypisujemy okienko. Parametr hInstance, od systemu jako argument dla WinMain. lpParam Wskaźnik do dodatkowych parametrów. NULL – brak.

14 Pokazanie i odnowienie oknaShowWindow( hwnd, nCmdShow ); UpdateWindow( hwnd );

15 Pętla komunikatów while(GetMessage(&Msg,NULL,0,0)>0) TranslateMessage(&Msg); DispatchMessage(&Msg); } //pętla przesyła komunikaty do WinProc

16 Obsługa zdarzeń WinProcLRESULT CALLBACK WndProc( HWND hwnd,…. ) { switch( msg ) case WM_CLOSE: DestroyWindow( hwnd ); break; case WM_DESTROY: PostQuitMessage( 0 ); default: return DefWindowProc( hwnd, msg, wParam, lParam ); } return 0;

17 Podstawy WINAPI - przyciski i pola tekstoweTemat: Podstawy WINAPI - przyciski i pola tekstowe

18 Klasy kontrolek BUTTON – przycisk EDIT – pole tekstowe LISTBOX - listaCOMBOBOX – lista rozwijana STATIC – tekst lub ikona statyczna

19 BUTTON - przykład HWND hPrzycisk; //deklaracja hPrzycisk = CreateWindowEx( 0, "BUTTON", „Pierwszy przycisk", WS_CHILD | WS_VISIBLE, 10, 10, 150, 30, hwnd, NULL, hInstance, NULL );

20 CHECKBOX - przykład HWND hPrzycisk; hPrzycisk = CreateWindowEx( 0, "BUTTON", "Checkbox", WS_CHILD | WS_VISIBLE | BS_CHECKBOX, 50, 10, 150, 30, hwnd, NULL, hInstance, NULL );

21 BS_RADIOBUTTON - przykładHWND hPrzycisk; hPrzycisk = CreateWindowEx( 0, "BUTTON", "Checkbox", WS_CHILD | WS_VISIBLE | BS_RADIOBUTTON, 90, 10, 150, 30, hwnd, NULL, hInstance, NULL );

22 EDIT - przykład HWND hText = CreateWindowEx( 0, "EDIT", NULL, WS_CHILD | WS_VISIBLE | WS_BORDER, 10, 10, 200, 100, hwnd, NULL, hInstance, NULL );

23 EDIT - przykład HWND hText = CreateWindowEx( WS_EX_CLIENTEDGE, "EDIT", NULL, WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL | ES_MULTILINE | ES_AUTOVSCROLL, 10, 10, 200, 100, hwnd, NULL, hInstance, NULL );

24 CDN