共用方式為


TN025: 文件、 檢視和框架建立

注意事項注意事項

由於它第一次線上文件中包含尚未更新下列技術提示。如此一來,某些程序和主題可能已經過期或不正確。如需最新資訊,建議您先搜尋線上文件索引中有興趣的主題。

這個註解告訴您,WinApps、 DocTemplates、 文件、 框架和檢視表的建立和擁有權的問題。

WinApp

還有一個CWinApp在系統中的物件。

以靜態方式建構及架構的內部實作進行初始化WinMain。 您必須衍生自CWinApp來發揮任何作用 (例外狀況: 擴充 Dll 不應該有CWinApp執行個體 — 初始化是在DllMain而是)。

在一個CWinApp物件擁有一份文件範本 ( CPtrList)。 沒有每個應用程式的一或多個文件範本。 DocTemplates 通常會從資源檔 (也就是字串陣列) 載入在CWinApp::InitInstance

pTemplate = new CDocTemplate(IDR_MYDOCUMENT, ...);
AddDocTemplate(pTemplate);

在一個CWinApp具有應用程式中的所有框架視窗物件。 應用程式的主框架視窗應該存放在 CWinApp::m_pMainWnd。 您的設定通常是m_pMainWndInitInstance如果您不需要讓 AppWizard 替您完成實作。 這是一份文件介面 (SDI) 的CFrameWnd ,做為主要的應用程式框架視窗與唯一的文件框架視窗。 若為多重文件介面 (MDI) 則 MDI 框架 (類別CMDIFrameWnd),做為主要的應用程式框架視窗包含所有的子系CFrameWnds。 每一個子視窗是類別的CMDIChildWnd (衍生自CFrameWnd),並做為其中一個可能會有許多文件框架視窗。

DocTemplates

CDocTemplate是建立者及管理員的文件。 它擁有所建立的文件。 如果您的應用程式會使用資源為基礎的方法如下所述,它將需要衍生自CDocTemplate

SDI 應用程式時,該類別的CSingleDocTemplate會持續追蹤的一個開啟的文件。 對於 MDI 應用程式時,該類別CMultiDocTemplate儲存清單 ( CPtrList) 是從該範本建立的所有目前開啟文件。 CDocTemplate::AddDocumentCDocTemplate::RemoveDocument提供虛擬成員函式中加入或移除文件範本。 CDocTemplate是一位朋友的 CDocument ,我們可以設定受保護 CDocument::m_pDocTemplate 後的指標移向 [建立文件的文件範本。

CWinApp處理預設的OnFileOpen實作,這會依序查詢所有文件範本。 實作包括尋找已開啟的文件,以及決定要開啟在新文件格式。

CDocTemplate管理文件和框架的 UI 繫結。

CDocTemplate就會記錄有未命名的文件的數目。

CDocument

A CDocument 擁有的CDocTemplate

文件有一份目前開啟的檢視 (衍生自CView),也會檢視文件 ( CPtrList)。

文件建立/毀滅檢視,但是一旦建立了附加到彼此。 當文件關閉時 (也就是到檔案/關閉),將會關閉所有附加的檢視。 當關閉文件的最後一個檢視時 (亦即,視窗/關閉),將會關閉文件。

CDocument::AddViewRemoveView介面用來維護檢視清單。 CDocument 是一位朋友的CView ,我們可以設定 CView::m_pDocument 後的指標。

CFrameWnd

A CFrameWnd (也稱為框架) 相同在扮演的角色作為 MFC 1.0,但現在CFrameWnd類別設計為不衍生出新的類別,在許多情況下使用。 在衍生的類別CMDIFrameWndCMDIChildWnd讓許多標準命令已經實作亦得到提升。

CFrameWnd負責建立視窗框架的工作區中。 通常是一個填滿工作區的框架的主視窗。

對於 MDI 框架視窗中,用戶端區域填滿 MDICLIENT 控制項就是依序的所有 MDI 子框架視窗的父代。 SDI 框架視窗或 MDI 子框架視窗中,用戶端區域通常以填滿CView-衍生視窗物件。 情況下CSplitterWnd,檢視的工作區會以填滿CSplitterWnd window 物件,以及CView-衍生的視窗物件 (每個分割窗格的那一個) 建立做為子視窗的CSplitterWnd

請參閱

其他資源

技術的備忘稿編號

依類別的技術注意事項