Relacje między obiektami MFC
Aby ułatwić umieszczenie procesu tworzenia dokumentu/widoku w perspektywie, rozważ uruchomiony program: dokument, okno ramki używane do przechowywania widoku i widok skojarzony z dokumentem.
Dokument przechowuje listę widoków tego dokumentu i wskaźnik do szablonu dokumentu, który utworzył dokument.
Widok przechowuje wskaźnik do dokumentu i jest elementem podrzędnym okna ramki nadrzędnej.
Okno ramki dokumentu zachowuje wskaźnik do bieżącego aktywnego widoku.
Szablon dokumentu przechowuje listę otwartych dokumentów.
Aplikacja przechowuje listę szablonów dokumentów.
System Windows śledzi wszystkie otwarte okna, dzięki czemu może wysyłać do nich komunikaty.
Te relacje są ustanawiane podczas tworzenia dokumentu/widoku. W poniższej tabeli pokazano, jak obiekty w uruchomionym programie mogą uzyskiwać dostęp do innych obiektów. Każdy obiekt może uzyskać wskaźnik do obiektu aplikacji, wywołując funkcję globalną AfxGetApp.
Uzyskiwanie dostępu do innych obiektów w aplikacji
Z obiektu | Jak uzyskać dostęp do innych obiektów |
---|---|
Dokument | Użyj polecenia GetFirstViewPosition i GetNextView , aby uzyskać dostęp do listy widoków dokumentu. Wywołaj metodę GetDocTemplate , aby pobrać szablon dokumentu. |
Wyświetlanie | Wywołaj metodę GetDocument , aby pobrać dokument. Wywołaj metodę GetParentFrame , aby pobrać okno ramki. |
Okno ramki dokumentu | Wywołaj metodę GetActiveView , aby uzyskać bieżący widok. Wywołaj metodę GetActiveDocument , aby pobrać dokument dołączony do bieżącego widoku. |
Okno ramki MDI | Wywołaj metodę MDIGetActive , aby pobrać aktualnie aktywny plik CMDIChildWnd. |
Zazwyczaj okno ramki ma jeden widok, ale czasami, podobnie jak w oknach rozdzielanych, to samo okno ramki zawiera wiele widoków. Okno ramki przechowuje wskaźnik do aktualnie aktywnego widoku; wskaźnik jest aktualizowany za każdym razem, gdy zostanie aktywowany inny widok.
Uwaga
Wskaźnik do głównego okna ramki jest przechowywany w zmiennej składowej m_pMainWnd obiektu aplikacji. Wywołanie metody OnFileNew
w zastąpieniu InitInstance
funkcji składowej zestawów CWinApp
m_pMainWnd dla Ciebie. Jeśli nie wywołasz OnFileNew
metody , musisz ustawić wartość InitInstance
zmiennej samodzielnie. (Aplikacje składnika COM (serwera) SDI mogą nie ustawiać zmiennej, jeśli /Embedding znajduje się w wierszu polecenia. Należy pamiętać, że m_pMainWnd jest teraz członkiem klasy CWinThread
, a nie CWinApp
.
Zobacz też
Szablony dokumentów i proces tworzenia dokumentu/widoku
Tworzenie szablonu dokumentu
Tworzenie dokumentu/widoku
Tworzenie nowych dokumentów, okien i widoków