一、单个文档和多个文档的区别:
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);//文档模块是文档类型模板,决定了该程序支持多少种文件类型