Relacje między obiektami MFC
Aby umieścić proces tworzenia dokumentu/widok perspektywy, należy wziąć pod uwagę uruchomionego programu: dokument, okno ramek zawiera widok i widok skojarzony z dokumentem.
Dokument przechowuje listę widoków tego dokumentu i wskaźnik do szablonu dokumentu, który utworzył dokument.
Widok zachowuje wskaźnik do jego dokumentu i jest podrzędny wobec jego nadrzędnej ramce okna.
Ramka okna dokumentu zachowuje wskaźnik do jej bieżącego widoku aktywnego.
Szablon dokumentu przechowuje listę otwartych dokumentów.
Aplikacja przechowuje listę jej szablonów dokumentów.
Aby wysyłać wiadomości do nich system Windows przechowuje informacje o wszystkich otwartych okien.
Te relacje są ustanawiane podczas tworzenia widoku/dokumentu.W poniższej tabeli przedstawiono, jak obiekty w uruchomionym programie dostępu do innych obiektów.Dowolny obiekt można uzyskać wskaźnik do obiektu aplikacji przez wywołanie funkcji globalnej AfxGetApp.
Uzyskanie dostępu do innych obiektów w aplikacji
Z obiektu |
Jak uzyskać dostęp do innych obiektów |
---|---|
Dokument |
Użyj GetFirstViewPosition i GetNextView na liście Widok dokumentu dostęp do. Wywołanie GetDocTemplate pobrać szablon dokumentu. |
Widok |
Wywołanie GetDocument celu uzyskania dokumentu. Wywołanie GetParentFrame uzyskać okno ramek. |
Okna dokumentu w ramce |
Wywołanie GetActiveView Aby uzyskać bieżący widok. Wywołanie GetActiveDocument dokumentu w dołączonych do bieżącego widoku. |
MDI ramki okna |
Wywołanie MDIGetActive uzyskać aktualnie aktywnych CMDIChildWnd. |
Zazwyczaj okno ramki ma jeden widok, ale czasami, jak w systemie windows rozdzielacza, tym samym oknie ramka zawiera wiele widoków.Okno ramek zachowuje wskaźnik do aktualnie aktywnego widoku; wskaźnik jest aktualizowana w dowolnym momencie uaktywnieniu innego widoku.
[!UWAGA]
Wskaźnik do okna głównego ramki jest przechowywana w m_pMainWnd zmienną obiektu aplikacji.Wywołanie OnFileNew w sieci zastępująca InitInstance Członkowskich funkcji CWinApp ustawia m_pMainWnd dla Ciebie.Jeśli nie wywoła OnFileNew, należy ustawić wartość zmiennej InitInstance samodzielnie.(Aplikacji (serwer) składnika SDI COM może nie ustawia zmiennej, jeśli w wierszu polecenia jest za). Należy zauważyć, że m_pMainWnd jest teraz członkiem klasy CWinThread zamiast CWinApp.