MFC教程(5)-- MFC对象的创建(1)
2010-03-25 20:33:46 来源:WEB开发网文档模板的创建
第一步是创建文档模板。
文档模板的作用是动态创建其他MFC对象,它保存了要动态创建类的动态创建信息和该文档类型的资源ID。这些信息保存在文档模板的成员变量里:m_nIDResource(资源ID)、m_pDocClass(文档类动态创建信息)、m_pFrameClass(边框窗口类动态创建信息)、m_pViewClass(视类动态创建信息)。
资源ID包括菜单、像标、快捷键、字符串资源的ID,它们都使用同一个ID值,如IDR_MAINFRAME。其中,字符串资源描述了文档类型,由七个被“ ”分隔的子字符串组成,各个子串可以通过CDocTemplate的成员函数GetDocString(CString& rString, enum DocStringIndex index)来获取。DocStringIndex是CDocTemplate类定义的枚举变量以区分七个子串,描述如下(英文是枚举变量名称)。
WindowTitle 应用程序窗口的标题。仅仅对SDI程序指定。
DocName 用来构造缺省文档名的字符串。当用File菜单的菜单项new创建新文档时,缺省文档名由该字符串加一个数字构成。如果空,使用“unitled”。
FileNewName 文档类型的名称,在打开File New对话框时显示。
FilterName 匹配过滤字符串,在File Open对话框用来过滤要显示的文件。如果不指定,File Open对话框的文件类型(file style)不可访问。
FilterExt 该类型文档的扩展名。如果不指定,则不可访问对话框的文件类型(File Style)。
RegFileTypeId 文档类型在Windows 注册库中的存储标识。
RegFileTypeName 文档类型在Windows 注册库中的类型名称。
文档模板被应用程序对象创建和管理。应用程序类CWinApp有一个CDocManager类型的成员变量m_pDocManager,通过该变量来管理应用程序的文档模板列表,把一些相关的操作委派给CDocManager对象处理。
CDocManager使用CPtrList类型的m_templateList变量来存储文档模板,并提供了操作文档模板列表的系列函数。
从语句pDocTemplate = new CSingleDocTemplate(…)可以看出应用程序对象创建模板时传递一个资源ID和三个类的动态创建信息给它:
IDR_MAINFRAME,资源ID
RUNTIME_CLASS(CTDoc),文档类动态创建信息
RUNTIME_CLASS(CMainFrame),边框窗口类动态创建信息
RUNTIME_CLASS(CTView),视类动态创建信息
文档模板对象接收这些信息并把它们保存到对应的成员变量里头。然后AddDocTemplate实际调用m_pDocManager->AddDocTemplate,把创建的模板对象加入到文档模板管理器的模板列表中,也就是应用程序对象的文档模板列表中。
更多精彩
赞助商链接