文档/视图结构中的各个部分是如何联系到一起的[4]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 coordinate 的 blog

       if (!dopromptfilename(newname, afx_ids_openfile,

         ofn_hidereadonly | ofn_filemustexist, true, null))

              return; // open cancelled

 

       afxgetapp()->opendocumentfile(newname);          //实际也是调用文档模板的同名函数

}

(二)文档模板与文档之间的联系:

        从上面看出应用程序对象对文件的新建和打开是依靠文档模板的opendocumentfile函数实现的。mfc的模板类是用来联系文档类、视类和框架类的,在它的构造函数就需要这三者的信息:

cdoctemplate ( uint nidresource, cruntimeclass* pdocclass, cruntimeclass* pframeclass, cruntimeclass* pviewclass );

构造函数利用后三个参数为它的三个cruntimeclass*类型的保护成员赋值:

       m_pdocclass = pdocclass;

       m_pframeclass = pframeclass;

       m_pviewclass = pviewclass;

    文档模板分为单文档模板和多文档模板两种,这两个模板的实现是不同的,除了上面的三个成员,内部有彼此不相同的但是很重要的成员变量。对于多文档模板:cptrlist m_doclist;,单文档模板:cdocument* m_ponlydoc;。它们都有一个成员函数adddocument,分别各自的成员进行赋值操作,而在它们的父类的cdoctemplate中则是为它所添加的文档的m_pdoctemplate变量赋值为模板自己的地址:

void cdoctemplate::adddocument(cdocument* pdoc)

{

本文关键:文档/视图结构中的各个部分是如何联系到一起的
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top