分享方式:


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

另請參閱

檔範本和檔/檢視建立程式
文件樣板建立
檔/檢視建立
建立新文件、視窗和檢視