Stronę tą wyświetlono już: 9311 razy
C++ WinAPI umożliwia tworzenie aplikacji okienkowych, niestety brak mu jakiegokolwiek interfejsu graficznego, dzięki któremu można by było wstawiać i tworzyć nowe elementy okna głównego (czego nie lubią programiści). Programy działają wykorzystując pętlę komunikatów, która ma zadanie przechwytywać przychodzące komunikaty i jeżeli te odwołują się do programu wtedy zostaje wywołana funkcja procedury okna. Funkcja ta przyjmuje cztery parametry: uchwyt okna HWND, identyfikator komunikatu UINT oraz dwa parametry dodatkowe lParam i wParam będące typu unsigned int. Komunikaty są obsługiwane w instrukcji switch case, a najczęściej z nich wykorzystywane to:
- WM_CREATE - komunikat wywoływany jako pierwszy po utworzeniu nowego okna programu;
- WM_SIZE - komunikat wywoływany przy zmianie rozmiaru okna;
- WM_PAINT - komunikat wywoływany przy odświeżaniu okna;
- WM_DESTROY - komunikat wywoływany przy niszczeniu okna;
- WM_MOUSEMOVE - komunikat wywoływany przy każdym ruchu myszy nad powierzchnią okna;
- WM_LBUTTONDOWN - komunikat wywoływany przy wciśnięciu lewego przycisku myszy;
- WM_RBUTTONDOWN - komunikat wywoływany przy wciśnięciu prawego przycisku myszy;
- WM_LBUTTONUP - komunikat wywoływany przy zwolnieniu lewego przycisku myszy;
- WM_RBUTTONUP - komunikat wywoływany przy zwolnieniu prawego przycisku myszy;
- WM_KEYDOWN - komunikat wywoływany przy wciśnięciu dowolnego klawisza klawiatury;
- WM_COMMAND - komunikat wywoływany przy kliknięciu jakiejś pozycji w menu okna, wywołaniu akceleratora lub przetwarzaniu komunikatu pochodzącego od okna potomnego (kontrolki).
Oczywiście komunikatów jest znacznie więcej niż te podane powyżej, jednakże do ogarnięcia podstaw C++ WinAPI powinny one wystarczyć.
W ramach tego działu postaram się przybliżyć następujące zagadnienia:
- zasada rejestracji okna, tworzenie funkcji procesu okna, tworzenie okna oraz przetwarzanie komunikatów w pętli komunikatów;
- dodawanie zasobów takich jak menu oraz ikona programu;
- tworzenie okien potomnych - omówienie podstawowych typów kontrolek;
- rysowanie po oknie - podstawowe funkcje związane z rysowaniem w WinAPI;
- buforowanie przy rysowaniu - czyli jak zrobić, żeby okno nie mrugało przy odrysowywaniu;
- zapewne wiele, wiele więcej...