文档介绍:课题:
单文档与多文档应用程序
目的要求:
1,了解单文档与多文档的异同
2,了解文档类程序类的构成及其作用
3,掌握对话框资源的使用
教学重点:
文档类程序类的构成及其作用
教学难点:
文档类程序类的构成及其作用
教学课时: 2
教学方法:
教学内容与步骤:
单文档SDI与多文档MDI主要差别:
SDI的应用程序:只有一个窗口
MDI的应用程序:每次可以读写多个文件或文档,可同时对多个文档进行操作,可以有多个子窗口
在创建SDI界面的应用程序时,hildFrame类,CMainFrame类的基类为CFrameWnd
在创建MDI界面的应用程序时,CMainFrame类的基类为CMDIFrameWnd
由于每一个文档可以有多个视图,但每个视图只能对应于一个确定的文档,多文档程序需要解决的问题仅仅是多个文档的数据管理方法的问题。
文档:最初的文档模板只支持主窗口,但每次打开一个新文档时都调用CDocument的函数OnNewDocument,建立一个由CMDIChildWnd派生的新的MDI子窗口,这些窗口中保存着各种已打开的文档,所有的细节都由MFC库处理
视图:是文档的不同表现形式,一个*.html语言的文件,在浏览器里和在记事本中打开的表现形式是不同的,但它们操作的是同一个文件这就是一个文档对应两视图
文档/视图结构的工作机制:
视图通过GetDocument成员函数获得指向相关联的文档对象的指针,通过该指针调用文档类的成员函数来从文档中读取数据,视图把数据显示于计算机屏幕上,用户通过与视图的交互来查看数据并对数据进行修改,视图通过相关联的文档类的成员函数将经过修改的数据传递给文档对象,文档对象获得修改过的数据之后,对其进行必要的修改,最后通过串化操作serial保存到永久介质(如磁盘文件)中。
文档、视图对象的创建过程:
SDI程序中框架窗口、文档和视图的创建是在应用程序类CAPP对象的InitInstance()成员函数中通过文档模板类完成的:CSingleDocTemplate * pDocTemplate; //创建单文档模板类对象pDocTemplate = new CSingleDocTemplate
(IDR_MAINFRAME,
RUNTIME_CLASS (CMyDoc), //CMyDoc是应用程序中的文档类
RUNTIME_CLASS (CMainFrame), //CMainFrame是应用程序中的框架窗口
RUNTIME_CLASS (CMyView) ); //CMyView是应用程序中的视图类AddDocTemplate(pDocTemplate); //加载文档模板类对象到文档模板列表
…
消息传递过程:
当用户选择了菜单项,单击了快捷键或工具条按钮,MAND消息。MAND消息的接受者,MAND消息还可以在视图、文档,甚至应用程序类中被处理。
Doc/View框架的主要成员:
Doc/View框架虽然可以调用成百上千个不同的类,但是核心类只有五个:
CWinApp CDocument CView CDocTemplate CFrameWnd
CWinApp 类:
CWinApp类代表主程序,CWinApp