Klasa CFrameWnd oferuje funkcjonalność interfejsu jednolitego dokumentu systemu Windows (SDI) który zachodzi lub okno wyskakujące ramek, wraz z członków do zarządzania okna.
Utworzyć okna w ramce użyteczne dla aplikacji, pochodną klasy CFrameWnd. Dodać zmienne składowe klasy pochodnej do przechowywania danych specyficznych dla aplikacji. Funkcje składowe wdrożenie programu obsługi wiadomości i wiadomości mapę w klasie pochodnej, aby określić, co się dzieje, gdy wiadomości są skierowane do okna.
Istnieją trzy sposoby do skonstruowania okno ramek:
Bezpośrednio konstruowania go za pomocą Tworzenie.
Bezpośrednio konstruowania go za pomocą LoadFrame.
Pośrednio konstruowania go przy użyciu szablonu dokumentu.
Zanim zadzwonisz, Utwórz lub LoadFrame, muszą konstruowania obiektu okno ramek na sterty za pomocą operatora new C++. Przed wywołaniem metody Create, można także zarejestrować klasy okna z funkcją globalną AfxRegisterWndClass do ustawiania stylów ikon i klasy dla ramki.
Funkcja Członkowskie Tworzenie aby przekazywać parametry tworzenia ramki jako argumenty natychmiastowe.
LoadFrame wymaga mniej argumentów niż Tworzenie, a zamiast tego pobiera większość jego wartości domyślne z zasobów, w tym ramki podpis, ikony, akcelerator tabeli i menu. Są dostępne przez LoadFrame, wszystkie zasoby te muszą mieć ten sam identyfikator zasobów (na przykład IDR_MAINFRAME).
Gdy obiekt CFrameWnd zawiera widoki i dokumentów, są one tworzone pośrednio przez ramy zamiast bezpośrednio przez programistę. Obiekt CDocTemplate orchestrates utworzenie ramki, tworzenie widoków zawierających i połączenia widoki do odpowiedniego dokumentu. Parametry konstruktora CDocTemplate określają CRuntimeClass trzech klas zaangażowanych (dokumentu, ramki i widoku). Obiekt CRuntimeClass jest używana w ramach do dynamicznego tworzenia nowych klatek jeśli określona przez użytkownika (na przykład za pomocą polecenia Nowy plik lub wielu polecenie Nowe okno interfejsu (MDI) dokument).
Klasy okno ramek otrzymanych z CFrameWnd musi być zadeklarowana z DECLARE_DYNCREATE w celu powyższego mechanizmu RUNTIME_CLASS do poprawnej pracy.
CFrameWnd zawiera implementacje domyślny do wykonywania następujących funkcji głównego okna w typowych aplikacji dla systemu Windows:
Okno ramek CFrameWnd przechowuje informacje o aktualnie aktywnego widoku, który jest niezależny od aktywnego okna systemu Windows lub bieżący fokus. Podczas uaktywniania ramki, aktywny widok jest powiadamiany przez wywołanie CView::OnActivateView.
Komunikaty polecenia i wiele wspólnych komunikaty powiadamiające ramki, włączając w to te, które są obsługiwane przez OnSetFocus, OnHScrolli OnVScroll funkcji CWnd, są delegowane przez CFrameWnd okno ramek do aktualnie aktywnego widoku.
Aktualnie aktywnego widoku (lub aktualnie aktywne okno ramek podrzędnych MDI w przypadku futryny MDI) można określić tytuł okna ramki. Tę funkcję można wyłączyć przez wyłączenie opcji bit styl FWS_ADDTOTITLE oknie ramki.
Okno ramek CFrameWnd zarządza, położenie pasków kontroli, widoków i innych okien podrzędnych wewnątrz obszaru klienckiego okno ramek. Okno ramek jest również czas bezczynności aktualizacja paska narzędzi i inne przyciski pasek sterowania. CFrameWnd okno ramek ma również implementacje domyślnych poleceń przełączanie Włączanie i wyłączanie paska narzędzi i stan.
Okno ramek CFrameWnd zarządza pasek menu głównego. Po wyświetleniu menu wyskakującego okna ramki używa mechanizmu UPDATE_COMMAND_UI do ustalenia, które elementy menu powinny być włączone, wyłączone lub kontrolowane. Gdy użytkownik wybierze element menu, okno ramek aktualizacje na pasku stanu ciągiem wiadomości dla tego polecenia.
CFrameWnd okno ramek ma tabelę opcjonalne akceleratora, która automatycznie tłumaczy skróty klawiaturowe.
CFrameWnd okno ramek ma opcjonalny pomocy identyfikator zestawu LoadFrame , używanego do pomocy kontekstowej. Okno ramek jest głównym filmowej semimodal Państwa, takie jak pomoc kontekstowa (SHIFT + F1) i trybach Podgląd wydruku.
Plik z Menedżera plików przeciągany i upuszczany na oknie ramki zostanie otwarte okno ramki CFrameWnd . Jeśli rozszerzenie pliku jest zarejestrowany i skojarzone z aplikacją, okno ramek odpowiada na żądanie otwartego programu exchange (DDE) dane dynamiczne który występuje, gdy użytkownik otwiera plik danych, w Menedżerze plików lub gdy wywoływana jest funkcja Windows interfejs API ShellExecute.
Jeśli okno ramki jest okna głównego aplikacji (czyli CWinThread::m_pMainWnd), gdy użytkownik zamyka aplikację, okno ramek monituje użytkownika o zapisanie dokumentów zmodyfikowanych (dla OnClose i OnQueryEndSession).
Jeśli okno ramka jest w głównym oknie aplikacji, okno ramek jest kontekst do uruchamiania programu WinHelp. Zamknięcie okna ramka zostanie zamknięty WINHELP.EXE, jeśli został on uruchomiony dla pomocy dla tej aplikacji.
Nie należy używać operatora usunąć C++ do zniszczenia w oknie ramki. Zamiast tego użyj CWnd::DestroyWindow . Wykonania CFrameWndPostNcDestroy spowoduje usunięcie obiektu C++, gdy okno jest niszczony. Gdy użytkownik zamyka okno ramek, obsługi OnClose domyślne spowoduje wywołanie DestroyWindow.
Aby uzyskać więcej informacji o CFrameWnd, zobacz Ramki okna tematy w Visual C++ Programmer's Guide.