Vztahy mezi objekty MFC
Pokud chcete umístit procesu vytváření dokumentu/zobrazení Perspektiva, zvažte spuštěný program: dokument, okno rámce, který obsahuje zobrazení a zobrazení přidružené k dokumentu.
Dokument, vede seznam zobrazení dokumentu a ukazatel do šablony dokumentu, které byl dokument vytvořen.
Zobrazení uchovává ukazatel na jeho dokument a je podřízen jeho nadřazené okno rámce.
Rámeček okna dokumentu ponechá ukazatel aktuální aktivní zobrazení.
Šablona dokumentu uchovává seznam svých otevřených dokumentů.
Aplikace uchovává seznam šablony dokumentu.
Systém Windows uchovává informace o všech otevřených oken odesílání zpráv na ně.
Tyto vztahy jsou vytvořeny během vytváření dokumentu/zobrazení.Následující tabulka ukazuje, jak lze objekty v provozní aplikaci přistupovat k jiným objektům.Libovolný objekt lze získat ukazatel na objekt aplikace pomocí volání globální funkce AfxGetApp.
Získání přístupu k jiným objektům v aplikaci
Z objektu |
Jak přistupovat k jiným objektům |
---|---|
Dokument |
Použití GetFirstViewPosition a GetNextView k přístupu k seznamu zobrazení dokumentu. Volání GetDocTemplate získat šablonu dokumentu. |
View |
Volání GetDocument k získání dokumentu. Volání GetParentFrame Chcete-li získat okna rámce. |
Rámeček okna dokumentu |
Volání GetActiveView Chcete-li získat aktuální zobrazení. Volání GetActiveDocument Chcete-li dokument připojený k aktuální zobrazení. |
Okno MDI |
Volání MDIGetActive Chcete-li získat aktuálně aktivní CMDIChildWnd. |
Obvykle má rámeček okna jedno zobrazení, ale někdy, jako rozdělovač windows stejné okno obsahuje více zobrazení.Okno rámce ponechá ukazatel aktivní zobrazení; ukazatel je aktualizován při každém jiné zobrazení, je aktivována.
[!POZNÁMKA]
Ukazatel na hlavní okno rámce je uložena v m_pMainWnd členské proměnné objektu application.Volání OnFileNew ve vaší přepsané InitInstance členské funkce CWinApp nastaví m_pMainWnd pro vás.Pokud nezavoláte OnFileNew, je nutné nastavit hodnotu proměnné InitInstance sami. (Aplikace SDI COM komponenty (server) se nemusí nastavit proměnnou, je-li /Embedding na příkazovém řádku.) Všimněte si, že m_pMainWnd je nyní členem třídy CWinThread spíše než CWinApp.
Viz také
Koncepty
Šablony dokumentů a proces tvorby v modelu dokument/zobrazení