关于MFC视图文档框架的理解-1

Posted moisiet

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于MFC视图文档框架的理解-1相关的知识,希望对你有一定的参考价值。

一、单个文档和多个文档的区别:

MFC分为对话框程序,单文档程序和多文档程序。

单个文档程序:一个主框架内仅允许打开一个视图,若要打开另一个,则当前的文档必须得关闭。单文档程序可以打开不同格式的文档。

对于单文档程序,主框架(CFrameWnd)、视图(CView)、文档(CDocument)被文档模板CSingleDocTemplate粘合在一起。

多个文档程序:一个主框架内可以打开多个视图。

对于多文档程序,主框架(CMDIFrameWnd)是单独存在的,子框架(CMDIChildWnd)、视图(CView)、文档(CDocument)被文档模板CMultiDocTemplate粘合在一起的。

二、单文档模板和多文档模板的区别:

文档模板是管理能打开文件类型的,不同的文件类型就需要不同的文档模板。

一个CSigleDocTemplate和CMultiDocTemplate都只能打开一种类型的文档,区别是前者只能打开一个文档,后者可以打开多个同类格式的文档。

因此如果需要程序支持多种格式的文档,必须添加不同的文档模板。

三、CDocument、CView、CChildFrameWnd是由谁创建的?

是由文档模板创建的。

CMultiDocTemplate* pDocTemplate;

pDocTemplate=new CMultiDocTemplate(ID_MAINFRAME,RUNTIME_CLASS(CMyDoc),RUNTIME_CLASS(CMyFrame),RUNTIME_CLASS(CMyView));//这一句只是初始化一个文档模板,并没有创建文档视图框架对象,因为这些对象是在后面由文档模板调用OpenDocumentFile()创建的。

AddDocTemplate(pDocTemplate);//文档模块是文档类型模板,决定了该程序支持多少种文件类型

以上是关于关于MFC视图文档框架的理解-1的主要内容,如果未能解决你的问题,请参考以下文章

MFC 中的文档视图体系结构

初识MFC----文档类CDocument

VS2010-MFC(文档视图和框架:概述)

MFC体系结构

MFC体系结构

没有文档/视图架构的 MFC