文档模板和文档/视图创建过程
为了管理创建文档及其相关视图和框架窗口的复杂过程,框架使用两个文档模板类:用于 SDI 应用程序的 CSingleDocTemplate 和用于 MDI 应用程序的 CMultiDocTemplate。 CSingleDocTemplate
可以一次创建和存储一种类型的一个文档。 CMultiDocTemplate
保留一个类型的多个打开的文档的列表。
某些应用程序支持多种文档类型。 例如,一个应用程序可能支持文本文档和图形文档。 在此类应用程序中,当用户选择“文件”菜单上的“新建”命令时,一个对话框会显示可能要打开的新文档类型的列表。 对于每种受支持的文档类型,应用程序使用不同的文档模板对象。 下图阐释了支持两种文档类型和显示多个打开的文档的 MDI 应用程序的配置。
包含两个文档类型的 MDI 应用程序
文档模板由应用程序对象创建和维护。 在应用程序的 InitInstance
函数中执行的一个关键任务是构造一个或多个适当类型的文档模板。 文档模板创建中对此功能进行了介绍。 应用程序对象存储指向其模板列表中的每个文件模板的指针,并提供一个用于添加文件模板的接口。
如果需要支持两种或更多种文档类型,必须为每种文档类型添加一个对 AddDocTemplate 的额外调用。
根据文档模板在应用程序的文档模板列表中的位置,为每个文档模板注册一个图标。 文档模板的顺序由调用 AddDocTemplate
来添加它们的顺序决定。 MFC 假定应用程序中的第一个图标资源是应用程序图标,下一个图标资源是第一个文档图标,依此类推。
例如,文档模板是应用程序的三个图标资源中的第三个。 如果在应用程序中的索引 3 处有一个图标资源,则该图标用于文档模板。 否则,索引 0 处的图标则用作默认图标。