img/mfc2.jpg

CFrameWnd


Opis

Klasa CFrameWnd zapewnia funkcjonalność typowego okna aplikacji SDI, czyli aplikacji jednodokumentowej (ang. single document interface).

Aby utworzyć okno użyteczne dla aplikacji należy utworzyć klasę dziedziczącą po klasie CFrameWnd. W tej właśnie klasie najczęściej umieszcza się dane na których operuje aplikacja. Ta klasa również zapewnia obsługę większości komunikatów dochodzących do okna.

Tworzenie okna

Są trzy metody utworzenia okna CFrameWnd:
- bezpośrednio, używając metody Create()
- bezpośrednio, używając metody LoadFrame()
- pośrednio, używając szablonu dokumentu

Przed utworzeniem okna metodami Create() lub LoadFrame() trzeba najpierw przydzielić pamięć dla obiektu, najczęściej używając operatora new, wywołując przy tym konstruktor. Przed wywołaniem Create() zwykle rejestruje się nową klasę okna w systemie, uzywając funkcji AfxRegisterWndClass(), co pozwala określić własną ikonę i styl dla okien tej klasy.

Metody Create() używa się w celu utworzenia okna w oparciu o bezpośrednio przekazane parametry. LoadFrame() wymaga mniej parametrów, gdyż tworzy okno w oparciu o skrypt zasobów. Dodatkowo, jeżeli w zasobach mamy zdefiniowane: ikonę, tablicę akceleratorów oraz menu o takim samym numerze ID jak numer zasobów okna, metoda LoadFrame() załaduje te zasoby automatycznie i powiąże z naszym oknem. Jest to niezwykle wygodny mechanizm, za pomocą którego w prosty sposób możemy utworzyć okno aplikacji.

Kiedy obiekt CFrameWnd zawiera widoki i dokumenty, wszystkie te obiekty nie są tworzone bezpośrednio przez programistę, a pośrednio przez środowisko. Obiekt klasy CDocTemplate zarządza tworzeniem klasy okna, klas widoków oraz klas dokumentów, wiążąc wszystkie te klasy w jedną całość.

Funkcje charakterystyczne dla okna aplikacji

Klasa CFrameWnd zawiera następujące mechanizmy ułatwiające wykorzystanie jej w charakterze klasy dla głównego okna aplikacji:


Uwaga:
Do zamknięcia okna klasy CFrameWnd nie należy stosować operatora delete. Zalecane jest wywołanie metody DestroyWindow(), która usunie okno i następnie zwolni pamięć zajmowaną przez obiekt.

Atrybuty

Atrybuty Opis
m_bAutoMenuEnableKontroluje włączenie i wyłączenie mechanizmu UPDATE_COMMAND_UI służącego do automatycznej aktualizacji stanu elementów menu.
m_rectDefaultDomuślny rozmiar i położenie okna aplikacji.

Metody

Konstruowanie

Metody Opis
CFrameWndTworzy obiekt typu CFrameWnd.

Inicjalizacja

Metody Opis
CreateTworzy okno systemu Windows powiązane z obiektem CFrameWnd.
LoadFrameTworzy dynamicznie okno na podstawie skryptu zasobów.
LoadAccelTableŁaduje tabelę akceleratorów.
LoadBarStateOdtwarza stan paska narzędzi.
SaveBarStateZachowuje stan paska narzędzi.
ShowControlBarWyświetla pasek narzędzi.
SetDockStatePrzytwierdza okno do okna głównego.
GetDockStateZwraca stan przytwierdzenia okna do okna głównego.

Operacje

Metody Opis
ActivateFramePokazuje ramkę na ekranie i uaktywnia ją dla użytkownika.
InitialUpdateFrameWywołuje metodę OnInitialUpdate() dla każdego widoku wewnątrz okna.
GetActiveFrameZwraca aktywny obiekt klasy CFrameWnd.
SetActiveViewUstawia obiekt CView jako aktywny.
GetActiveViewZwraca aktywny obiekt CView.
CreateViewTworzy wewnątrz okna widok nie dziedziczący po CView.
GetActiveDocumentZwraca aktualnie dołączony dokument.
GetControlBarZwraca obiekt CControlBar.
GetMessageStringZwraca łańcuch znaków dla komunikatu o danym numerze. Standardowo ładuje z zasobów łańcuch o numerze zgodnym z numerem komunikatu. Wywoływana najczęściej w celu uaktualnienia zawartości linii statusu.
IsTrackingSprawdza, czy tzw. splitter aktualnie jest przemieszczany. Splitter to wąski pasek umożliwiający dynamiczny podział okna na dwie części w dowolnej proporcji.
SetMessageTextUstawia tekst wyświetlany w linii statusu.
EnableDockingUmożliwia obiektowi CControlBar przytwierdzenie się do innego okna.
DockControlBarPrzytwierdza obiekt CControlBar.
FloatControlBarOdłącza obiekt CControlBar od okienka.
BeginModalStateUstawia okno jako modalne.
EndModalStateKończy stan modalny okna.
InModalStateSprawdza czy okno jest w stanie modalnym.
ShowOwnedWindowsWyświetla wszystkie okna których właścicielem jest dany obiekt CFrameWnd.
RecalcLayoutUaktualnia pozycję pasków kontrolnych okna (np. po zmianie jego rozmiarów).

Metody do pokrycia w klasach pochodnych

Metody Opis
OnCreateClientTworzy widok wewnątrz ramki okna. Nie należy wywoływać samodzielnie. Domyślnie tworzy obiekt klasy CView.
OnSetPreviewModePrzełącza okno w tryb podglądu wydruku.
GetMessageBarZwraca wskaźnik do obiektu linii statusu.
NegotiateBorderSpaceUzgadnia rozmiar ramki obiektu (przy operacjach na obiektach OLE).


Zobacz także

CWnd, CView, CControlBar

Hierarchia

img/hr_cframewnd.gif