Relacje między obiektami MFC
Aby umieścić proces tworzenia dokumentu/widoku perspektywy, należy wziąć pod uwagę uruchomionych programów: dokument, okno ramek zawiera widok i widok skojarzony z dokumentem.
Dokument zachowuje listę widoków tego dokumentu i wskaźnik do szablonu dokumentu, który utworzył dokument.
Widok zachowuje wskaźnik do jego dokumentu i jest elementem podrzędnym ramki okna nadrzędnego.
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.
System Windows przechowuje informacje o wszystkich otwartych okien, więc to wysyłanie do nich wiadomości.
Te relacje są ustanawiane podczas tworzenia widoku/dokumentu.W poniższej tabeli przedstawiono, jak obiekty w uruchomionego programu dostępu do innych obiektów.Dowolny obiekt można uzyskać wskaźnik do obiektu aplikacji poprzez 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życie GetFirstViewPosition i GetNextView uzyskać dostępu do listy widoku dokumentu. Wywołanie GetDocTemplate pobrać szablonu dokumentu. |
Widok |
Wywołanie GetDocument Aby uzyskać dokument. Wywołanie GetParentFrame się okno ramek. |
Okno dokumentu ramki |
Wywołanie GetActiveView się w bieżącym widoku. Wywołanie GetActiveDocument Aby uzyskać dokument dołączony do bieżącego widoku. |
Okna MDI ramki |
Wywołanie MDIGetActive Aby uzyskać aktualnie aktywnych CMDIChildWnd. |
Zazwyczaj okno ramki ma jeden widok, ale czasami, jak w windows rozdzielacza, tym samym oknie ramki zawiera wiele różnych widoków.Okno ramek zachowuje wskaźnik do aktualnie aktywnego widoku; wskaźnik jest aktualizowana każdorazowo w inny widok jest aktywna.
[!UWAGA]
Wskaźnik do okna głównego ramki jest przechowywana w m_pMainWnd zmienną obiektu application.Wywołanie OnFileNew w swoje zastępująca InitInstance funkcji składowej z CWinApp ustawia m_pMainWnd dla Ciebie.Jeśli nie zostanie wywołana OnFileNew, należy ustawić wartość zmiennej w InitInstance samodzielnie. (Aplikacje SDI COM składnika (serwer) może nie ustawić zmienną Jeśli w wierszu polecenia jest osadzanie.) Należy zauważyć, że m_pMainWnd jest teraz członkiem klasy CWinThread zamiast CWinApp.