文档模板和文档/视图创建过程

为了管理创建文档及其相关视图和框架窗口的复杂过程,框架使用两个文档模板类:用于 SDI 应用程序的 CSingleDocTemplate 和用于 MDI 应用程序的 CMultiDocTemplateCSingleDocTemplate 可以一次创建和存储一种类型的一个文档。 CMultiDocTemplate 保留一个类型的多个打开的文档的列表。

某些应用程序支持多种文档类型。 例如,一个应用程序可能支持文本文档和图形文档。 在此类应用程序中,当用户选择“文件”菜单上的“新建”命令时,一个对话框会显示可能要打开的新文档类型的列表。 对于每种受支持的文档类型,应用程序使用不同的文档模板对象。 下图阐释了支持两种文档类型和显示多个打开的文档的 MDI 应用程序的配置。

Diagram of an MDI application that has two document types.
包含两个文档类型的 MDI 应用程序

文档模板由应用程序对象创建和维护。 在应用程序的 InitInstance 函数中执行的一个关键任务是构造一个或多个适当类型的文档模板。 文档模板创建中对此功能进行了介绍。 应用程序对象存储指向其模板列表中的每个文件模板的指针,并提供一个用于添加文件模板的接口。

如果需要支持两种或更多种文档类型,必须为每种文档类型添加一个对 AddDocTemplate 的额外调用。

根据文档模板在应用程序的文档模板列表中的位置,为每个文档模板注册一个图标。 文档模板的顺序由调用 AddDocTemplate 来添加它们的顺序决定。 MFC 假定应用程序中的第一个图标资源是应用程序图标,下一个图标资源是第一个文档图标,依此类推。

例如,文档模板是应用程序的三个图标资源中的第三个。 如果在应用程序中的索引 3 处有一个图标资源,则该图标用于文档模板。 否则,索引 0 处的图标则用作默认图标。

另请参阅

常规 MFC 主题
文档模板创建
文档/视图创建
MFC 对象之间的关系
创建新文档、窗口和视图