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:
| Metody |
Opis |
| ActivateFrame | Pokazuje ramkę na ekranie i uaktywnia
ją dla użytkownika. |
| InitialUpdateFrame | Wywołuje metodę
OnInitialUpdate() dla każdego widoku wewnątrz okna. |
| GetActiveFrame | Zwraca aktywny obiekt klasy
CFrameWnd. |
| SetActiveView | Ustawia obiekt CView jako aktywny. |
| GetActiveView | Zwraca aktywny obiekt CView. |
| CreateView | Tworzy wewnątrz okna widok nie dziedziczący
po CView. |
| GetActiveDocument | Zwraca aktualnie dołączony dokument. |
| GetControlBar | Zwraca obiekt CControlBar. |
| GetMessageString | Zwraca ł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. |
| IsTracking | Sprawdza, czy tzw. splitter aktualnie
jest przemieszczany. Splitter to wąski pasek umożliwiający dynamiczny
podział okna na dwie części w dowolnej proporcji. |
| SetMessageText | Ustawia tekst wyświetlany w linii
statusu. |
| EnableDocking | Umożliwia obiektowi CControlBar
przytwierdzenie się do innego okna. |
| DockControlBar | Przytwierdza obiekt CControlBar. |
| FloatControlBar | Odłącza obiekt CControlBar
od okienka. |
| BeginModalState | Ustawia okno jako modalne. |
| EndModalState | Kończy stan modalny okna. |
| InModalState | Sprawdza czy okno jest w stanie
modalnym. |
| ShowOwnedWindows | Wyświetla wszystkie okna
których właścicielem jest dany obiekt CFrameWnd. |
| RecalcLayout | Uaktualnia pozycję pasków
kontrolnych okna (np. po zmianie jego rozmiarów). |