MFC 物件關聯性
為了協助放置文件/檢視建立程序,請考慮一個執行中程式:一個文件、一個用來包含檢視的框架視窗,以及與文件關聯的檢視。
文件會保留該文件的檢視清單,以及一個指向已建立之文件的文件範本的指標。
檢視會保留指向其文件的指標,而且是其父框架視窗的子系。
文件框架視窗會保留指向其目前現用檢視的指標。
文件範本會保留其開啟的文件清單。
應用程式會保留其文件範本的清單。
Windows 會持續追踨所有開啟的視窗,因此可以傳送訊息給它們。
這些關聯性是在文件/檢視建立期間建立。 下表顯示執行中程式的物件如何存取其他物件。 任何物件都可以藉由呼叫全域函 式 AfxGetApp 來取得應用程式物件的指標。
存取應用程式中的其他物件
來源物件 | 如何存取其他物件 |
---|---|
文件 | 使用 GetFirstViewPosition 和 GetNextView 來存取檔的檢視清單。 呼叫 GetDocTemplate 以取得檔範本。 |
檢視 | 呼叫 GetDocument 以取得檔。 呼叫 GetParentFrame 以取得框架視窗。 |
文件框架視窗 | 呼叫 GetActiveView 以取得目前的檢視。 呼叫 GetActiveDocument 以取得附加至目前檢視的檔。 |
MDI 框架視窗 | 呼叫 MDIGetActive 以取得目前作用 中的 CMDIChildWnd 。 |
通常框架視窗會有一個檢視,不過有時候在分隔視窗中,同一個框架視窗會包含多個檢視。 框架視窗會保留目前使用中檢視的指標,該指標會在其他檢視啟動時的進行更新。
注意
主框架視窗的指標會儲存在 應用程式物件的m_pMainWnd 成員變數中。 在您的覆寫中呼叫 OnFileNew
的集合 成員函 CWinApp
式,m_pMainWnd InitInstance
為您。 如果您未呼叫 OnFileNew
,則必須自己在 InitInstance
中設定變數值 (如果 /Embedding 位於命令列上,SDI COM 元件 (伺服器) 應用程式可能無法設定變數。 請注意, m_pMainWnd現在是 類別 CWinThread
的成員,而不是 CWinApp
。