Okna
klasa CWnd
|
|
-
-
Okno w systemie Windows jest
podstawowym obiektem umożliwiającym obsługę
komunikatów, na których cały system się opiera
-
obiektami Windows, które
reprezentują okna są uchwyty (HWND), każde
okno ma swój unikalny uchwyt, na podstawie którego jest
rozróżniane od pozostałych okien
-
Pełną funkcjonalność
okien w MFC daje klasa CWnd
-
Obiekt klasy CWnd może
być (ale nie musi) dołączony tylko do jednego
okna Windows (czyli do jednego uchwytu HWND)
-
mogą istnieć
obiekty CWnd bez odpowiadających im okien w
systemie Window
-
mogą istnieć w
Windows okna tworzone przez aplikacje napisane przy użyciu
MFC, które nie mają odpowiadających im obiektów
klasy CWnd
[początek strony]
[początek strony]
-
-
Rysowanie
-
w MFC wykorzystano schemat
rysowania zastosowany w Windows - zawsze rysowanie odbywa się
na kontekście urządzenia
(DC - device context)
-
do pobierania kontekstu do
rysowania służą metody:
- CWnd::GetDC - dla kontekstu obszaru roboczego (client
area)
- CWnd::GetWindowDC - dla kontekstu całego
okna
-
po narysowaniu używany
kontekst należy zwolnić przy pomocy funkcji CWnd::ReleaseDC
-
można zmieniać części
obszaru roboczego, które przy najbliższym rysowaniu
zostaną uaktualnione: CWnd::Invalidate, CWnd::InvalidateRect,
CWnd::InvalidateRgn, CWnd::ValidateRect, CWnd::ValidateRgn
-
Obsługa komunikatów
-
Sposoby zmiany parametrów okna
-
Inicjalizacja okna Windows w
obiekcie klasy CWnd
-
W klasie CWnd zawarta jest
większość funkcji API dokonujących operacji na
oknach, w większości przypadków są to tylko
funkcje przejściowe, które pobierają uchwyt okna (CWnd::m_hWnd)
i dla niego wywołują funkcję API
[początek strony]
-
-
Czynności wykonywane gdy użytkownik
zamyka okno:
-
wywoływana jest wirtualna
metoda CWnd::OnClose
-
standardowa CWnd::OnClose
wywołuje CWnd::DestroyWindow
-
ostatnią wywoływana
metodą obiektu okna jest wirtualna CWnd::OnNcDestroy
-
standardowa CWnd::OnNcDestroy
wywołuje CWnd::PostNcDestroy
-
CWnd::PostNcDestroy dla
obiektu pochodzącego z klasy CFrameWnd
(także pośrednio) wywołuje delete this
-
Zasadą w MFC jest nieużywanie
operatora delete dla okien
nadrzędnych (z klasy CFrameWnd i potomnych) oraz
dla widoków
-
dla tych okien w celu ich
zniszczenia zawsze należy wywoływać CWnd::DestroyWindow,
w ostatnią czynnością niszczenia będzie
wywołanie delete this
-
okna nadrzędne powinny być
umieszczane na stercie (tworzone dynamicznie), natomiast w
przypadku pozostałych okien zalecane jest ich tworzenie
na stosie (statyczne)
-
Można zniszczyć obiekt CWnd
nie niszcząc okna, przed rozpoczęciem należy przy
pomocy metody CWnd::Detach odłączyć obiekt
klasy CWnd od rzeczywistego okna (uchwytu HWND)
systemu Windows
[początek strony]
-
CObject
- informacja w trakcie wykonywania, dynamiczne tworzenie, serializacja
CCmdTarget - obsługa
komunikatów Windows
CWnd
CFrameWnd - okno nadrzędne
aplikacji
CView
- widok dokumentu w aplikacji typu dokument/widok
CSplitterWnd
- okno umożliwiające dzielenie okna pomiędzy widokami
CControlBar
- pomocnicze okno głównego okna zawierające kontrolki
CPropertySheet - okno z
zakładkami
CDialog
- okno dialogowe
kontrolki
systemu Windows
[początek strony]
|