240 likes | 342 Views
Temat:. Podstawy WINAPI - MessageBOX. Funkcja WinMain. # include < windows.h > int WINAPI WinMain ( HINSTANCE hInstance , HINSTANCE hPrevInstance , LPSTR lpCmdLine , int nCmdShow ) { return 0; }. Funkcja MessageBox. MessageBox ( hWnd , lpText , lpCaption , uType ).
E N D
Temat: Podstawy WINAPI - MessageBOX
Funkcja WinMain #include <windows.h> intWINAPIWinMain( HINSTANCEhInstance, HINSTANCEhPrevInstance, LPSTRlpCmdLine, intnCmdShow) { return 0; }
Funkcja MessageBox MessageBox( hWnd, lpText, lpCaption, uType )
Funkcja MessageBox #include <windows.h> intWINAPIWinMain( HINSTANCEhInstance, HINSTANCEhPrevInstance, LPSTRlpCmdLine, intnCmdShow) { MessageBox( NULL, "Witaj świecie", "Moja pierwsza aplikacja", MB_ICONWARNING); return 0; }
uType – typy okienek • MB_ABORTRETRYIGNORE • MB_OK • MB_OKCANCEL • MB_RETRYCANCEL • MB_YESNO • MB_YESNOCANCEL • MB_ICONWARNING • MB_ICONINFORMATION • MB_ICONQUESTION • MB_ICONSTOP lub MB_ICONERROR lub MB_ICONHAND
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
Temat: Podstawy WINAPI- Okno
Klasa okna WNDCLASSEXwc; (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);
Rejestracja okna if(!RegisterClassEx(&wc)) { MessageBox( NULL, "WindowRegistrationFailed! ", "Error!", MB_ICONEXCLAMATION|MB_OK); return 0; }
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);
Pokazanie i odnowienie okna ShowWindow( hwnd, nCmdShow ); UpdateWindow( hwnd );
Pętla komunikatów while(GetMessage(&Msg,NULL,0,0)>0) TranslateMessage(&Msg); DispatchMessage(&Msg); } //pętla przesyła komunikaty do WinProc
Obsługa zdarzeń WinProc LRESULTCALLBACKWndProc( HWNDhwnd,…. ) { switch( msg ) { caseWM_CLOSE: DestroyWindow( hwnd ); break; caseWM_DESTROY: PostQuitMessage( 0 ); break; default: return DefWindowProc( hwnd, msg, wParam, lParam ); } return 0; }
Temat: Podstawy WINAPI- przyciski i pola tekstowe
Klasy kontrolek • BUTTON – przycisk • EDIT – pole tekstowe • LISTBOX - lista • COMBOBOX – lista rozwijana • STATIC – tekst lub ikona statyczna
BUTTON - przykład HWNDhPrzycisk; //deklaracja hPrzycisk = CreateWindowEx( 0, "BUTTON", „Pierwszy przycisk", WS_CHILD | WS_VISIBLE, 10,10, 150, 30, hwnd, NULL, hInstance, NULL );
CHECKBOX - przykład HWNDhPrzycisk; hPrzycisk = CreateWindowEx( 0, "BUTTON", "Checkbox", WS_CHILD | WS_VISIBLE | BS_CHECKBOX, 50, 10, 150, 30, hwnd, NULL, hInstance, NULL );
BS_RADIOBUTTON - przykład HWNDhPrzycisk; hPrzycisk = CreateWindowEx( 0, "BUTTON", "Checkbox", WS_CHILD | WS_VISIBLE | BS_RADIOBUTTON, 90, 10, 150, 30, hwnd, NULL, hInstance, NULL );
EDIT - przykład HWNDhText = CreateWindowEx( 0, "EDIT", NULL, WS_CHILD | WS_VISIBLE | WS_BORDER, 10, 10, 200, 100, hwnd, NULL, hInstance, NULL );
EDIT - przykład HWNDhText = 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 );