Udostępnij za pośrednictwem


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 OnFileNewmetody , 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