Programowanie w Środowisku Windows Architektura API Win32 Programowanie w Środowisku Windows
Programowanie w Środowisku Windows Plan wykładu Aplikacja okienkowa Okna Podstawowe zagadnienia Tworzenie okien Komunikaty Funkcja okienkowa Obsługa okien Programowanie w Środowisku Windows
Programowanie w Środowisku Windows Aplikacja okienkowa Aplikacja konsolowa Interakcja z użytkownikiem – linia poleceń Funkcja main() Wykonanie programu Przykład... Programowanie w Środowisku Windows
Programowanie w Środowisku Windows Aplikacja okienkowa Interakcja z użytkownikiem Funkcja WinMain() Argumenty Windows.h MessageBox Przykład... Projekt EmptyEx – dodac obsluge MsgBoxa int nRes = MessageBox (NULL, TEXT ("Papo Smerfie, daleko jeszcze???"), TEXT ("Pytanie o sens"), MB_ICONQUESTION | MB_YESNO) ; if(nRes == IDYES) MessageBox (NULL, TEXT ("Oj daleko"), TEXT ("Odpowiedz"), MB_ICONWARNING) ; else MessageBox (NULL, TEXT ("Juz calkiem blisko"), TEXT ("Odpowiedz"), MB_ICONINFORMATION) ; return 0; Programowanie w Środowisku Windows
Programowanie w Środowisku Windows Aplikacja okienkowa Tworzenie projektu Win32 Przykład... Prostszy przykład - WindowApp Stworzenie nowego projektu Win32 Programowanie w Środowisku Windows
Aplikacja okienkowa - programowanie Notacja węgierska Typy CHAR, WCHAR, TCHAR Handle DWORD, INT, FLOAT, BYTE WPARAM, LPARAM Programowanie w Środowisku Windows
Programowanie w Środowisku Windows Okna Elementy okna Title bar Client area Menu Tool bar Status bar Odpalic projekt WindowApp Programowanie w Środowisku Windows
Programowanie w Środowisku Windows Okna Klasa okna i jej rejestracja (RegisterClassEx() ) Tworzenie okna (CreateWindowEx() ) Wyświetlenie i schowanie okna (ShowWindow() ) Przykładowa aplikacja – analiza Ogolne zasady zarzadzania oknami Programowanie w Środowisku Windows
Programowanie w Środowisku Windows Okna - rejestracja Struktura WNDCLASSEX Funkcja obsługi komunikatów Ikony, kursor, menu Identyfikator klasy Klasy systemowe RegisterClassEx() Funkcja GetLastError() Na przykladzie WindowApp: - Zmiana parametrow WNDCLASSEX Programowanie w Środowisku Windows
Programowanie w Środowisku Windows Okna - tworzenie CreateWindowEx() Różnice względem CreateWindow() – dodatkowe style Identyfikator klasy Położenie Styl okna – WS_*** Uchwyty Uchwyt – 32b identyfikator Programowanie w Środowisku Windows
Programowanie w Środowisku Windows Okna - style WS_CAPTION WS_HSCROLL WS_MAXIMIZEBOX / WS_MINIMIZEBOX WS_SYSMENU WS_TABSTOP Pokazac przyklady (WindowApp) Programowanie w Środowisku Windows
Programowanie w Środowisku Windows Okna - typy WS_OVERLAPPED „zwykłe okno” WS_OVERLAPPEDWINDOW WS_POPUP title bar nie jest wymagany WS_CHILD obszar roboczy rodzica Programowanie w Środowisku Windows
Programowanie w Środowisku Windows Okna - hierarchia Zasady Z-order – lista okien Top-most i top-level Sterowanie WS_EX_TOPMOST BringWindowToTop() SetWindowPos() – wymuszenie hierarchii Programowanie w Środowisku Windows
Programowanie w Środowisku Windows Komunikaty Akcje użytkownika Np. skalowanie okna Format – typ MSG Identyfikator WM_*** Parametry – WPARAM, LPARAM Adresat Źródła komunikatów Komunikaty własne – WM_USER Programowanie w Środowisku Windows
Programowanie w Środowisku Windows Komunikaty - kolejka Kolejka komunikatów Priorytety Dodawanie do kolejki PostMessage() SendMessage() Pobieranie z kolejki GetMessage() i PeekMessage() Komunikat WM_QUIT i WM_PAINT Przykład... WM_PAINT – Get/PeekMessage nie usuwa z kolejki WM_QUIT – f. Zwraca 0 Programowanie w Środowisku Windows
Programowanie w Środowisku Windows Komunikaty - obsługa Pętla obsługi komunikatów TranslateMessage() i DispatchMessage() TranslateAccelerator() – WM_COMMAND Przykład... Funkcja obsługi komunikatów Wywoływana przez system WM_COMMAND nie jest kolejkowane Funkcja okienkowa – moze byc wywolana jako resultat Dispatch Programowanie w Środowisku Windows
Programowanie w Środowisku Windows Komunikaty - obsługa Funkcja obsługi komunikatów Zwracana wartość DefWindowProc() Uwagi Deklaracje przed switch Trwałość zmiennych Funkcje Namespace Zadeklarowac namespace w WindowApp. -> Koniec pierwszego wykladu Programowanie w Środowisku Windows
Programowanie w Środowisku Windows Obsługa okien Komunikaty dotyczące obsługi okien Tworzenie i niszczenie Rysowanie Skalowanie Funkcje pomocne w sterowaniu Programowanie w Środowisku Windows
Programowanie w Środowisku Windows Obsługa - tworzenie WM_GETMINMAXINFO Ustalenie rozmiaru okna lParam – wskaźnik na MINMAXINFO Przykład... WM_NCCREATE WM_NCCALCSIZE WM_CREATE (CREATESTRUCT) WM_SHOWWINDOW Dodac obsluge WM_GETMINMAX, zmienic wartosci MaxSize, TrackSize. WndProc zwraca 0. Programowanie w Środowisku Windows
Obsługa - wyświetlenie WM_SHOWWINDOW WM_WINDOWPOSCHANGING WM_ACTIVATEAPP WM_NCACTIVATE WM_GETTEXT WM_ACTIVATE WM_SETFOCUS WM_NCPAINT WM_WINDOWPOSCHANGED WM_SIZE WM_MOVE Komunikaty związane z ShowWindow Programowanie w Środowisku Windows
Programowanie w Środowisku Windows Obsługa - rysowanie Rysowanie na żądanie systemu Komunikat WM_PAINT Graphics Device Interface - GDI UpdateWindow Uruchomienie aplikacji bez BeginPaint – 100% na TaskManager Programowanie w Środowisku Windows
Programowanie w Środowisku Windows Obsługa - niszczenie WM_DESTROY Akcja użytkownika PostQuitMessage() WM_QUIT Przykład... Debugowanie konca aplikacji Programowanie w Środowisku Windows
Programowanie w Środowisku Windows Obsługa – zmiana stylu GetWindowLong() GWL_STYLE GWL_EXSTYLE GWL_WNDPROC SetWindowLong() Programowanie w Środowisku Windows
Programowanie w Środowisku Windows Obsługa - funkcje EnableWindow() Blokowanie komunikatów Przydatne przy tworzeniu kontrolek IsWindow() GetWindowRect() i GetClientRect() ScreenToClient() / ClientToScreen() Programowanie w Środowisku Windows
Programowanie w Środowisku Windows Obsługa - funkcje MoveWindow() WM_WINDOWPOSCHANGED WM_MOVE WM_SIZE Get / SetWindowPlacement() Ustawienie trybu wyświetlenia okna Jezeli WM_WINDOWPOSCHANGED jest obslugiwane w DefWindowProc, to wysylane sa MOVE i SIZE. Programowanie w Środowisku Windows
Programowanie w Środowisku Windows Podsumowanie Odmienna filozofia funkcjonowania aplikacji Sterowanie poprzez komunikaty Okno – forma komunikacji z użytkownikiem Programowanie w Środowisku Windows
Programowanie w Środowisku Windows Dziękuję za uwagę! Programowanie w Środowisku Windows