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应存储应用程序的主框架窗口;通常,如果尚未允许 AppWizard (ide) 为您的,在 InitInstance 实现的 m_pMainWnd 。 对于单 (SDI)文档界面 (sdi) 这是的一 CFrameWnd 作为主应用程序框架窗口以及单个文档框架窗口。 对于多文档界面 (mdi) 这 (MDI)是的 MDI 框架 (类) CMDIFrameWnd该为主应用程序框架窗口包含所有子 CFrameWnds。 每个子窗口是类 CMDIChildWnd (从派生 CFrameWnd),并用作其中一个潜在文档框架窗口。
DocTemplates
CDocTemplate 是创建者,并且管理器文档。 它拥有文档中创建。 如果应用程序使用下述该资源基于的方法,它不需要从 CDocTemplate派生。
为 SDI 应用程序,类 CSingleDocTemplate 记录打开的文档。 对 MDI 应用程序, CMultiDocTemplate 将列表的类 ( CPtrList) 所有当前打开文档创建从该模板。 CDocTemplate::AddDocument 和 CDocTemplate::RemoveDocument 用于添加或移除文档提供虚拟成员函数从模板。 CDocTemplate 是 CDocument friend,为了可以设置受保护的 CDocument::m_pDocTemplate 返回指针指回文档创建文档的模板。
CWinApp 处理默认值 OnFileOpen 实现,或者将查询任何文档模板。 实现包括查找已打开文档和决定打开新的数据格式文档。
CDocTemplate 管理绑定的 UI 文档和框架。
CDocTemplate 保留数字的计数的未命名文档。
CDocument
CDocument 由 CDocTemplate拥有。
文档具有查验文档当前打开的视图的列表 (从派生 CView) ( CPtrList)。
文档不创建/销毁视图,但是,它们彼此附加属性,在创建之后。 在文档关闭的 (即通过文件/关闭),任何附加的视图将关闭。 当在文档的最后一个视图结束 (即 windows/关闭) 文档中已关闭。
CDocument::AddView, RemoveView 接口用于维护视图列表。 CDocument 是 CView friend,为了可以设置 CView::m_pDocument 返回一个指针。
CFrameWnd
CFrameWnd (也称为帧) 播放角色与在 MFC 1.0,但是, CFrameWnd 类现在设计在许多情况下使用,而无需派生新类。 派生类 CMDIFrameWnd 和 CMDIChildWnd 也会引发许多标准命令已实现。
CFrameWnd 为创建 windows 负责在框架的工作区。 通常在加载帧的工作区的一个主窗口。
对于 MDI 框架窗口,工作区填充页的所有 MDI 子窗体框架窗口父的 MDICLIENT 控件。 对于 SDI 框架窗口或 MDI 子窗体框架窗口,工作区通常用 CView派生的窗口对象。 在 CSplitterWnd,视图的工作区填充 CSplitterWnd 窗口对象和 CView派生的窗口对象 (一个拆分窗格) 创建为 CSplitterWnd的子窗口。