欢迎来到天天文库
浏览记录
ID:26915920
大小:269.00 KB
页数:51页
时间:2018-11-30
《《单文档与多》ppt课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第11章单文档与多文档本章主要介绍VisualC++中的文档/视图结构的工作机制111.1概述211.1.1单文档界面与多文档界面VC的MFC库支持三种不同的应用程序单文档界面(SDI)多文档界面(MDI)基于对话框的应用程序SDI的应用程序只有一个窗口MDI的应用程序每次可以读写多个文件或文档,可同时对多个文档进行操作,可以有多个子窗口主要差别在创建SDI界面的应用程序时,不生成CChildFrame类,CMainFrame类的基类为CFrameWnd在创建MDI界面的应用程序时,CMainFrame类的基类为CM
2、DIFrameWnd使用AppWizard创建SDI和MDI界面的应用程序的过程几乎完全一样3由于每一个文档可以有多个视图,但每个视图只能对应于一个确定的文档多文档程序需要解决的问题仅仅是多个文档的数据管理方法的问题多文档程序,最初的文档模板只支持主窗口,但每次打开一个新文档时都调用CDocument的函数OnNewDocument,建立一个由CMDIChildWnd派生的新的MDI子窗口,这些窗口中保存着各种已打开的文档,所有的细节都由MFC库处理视图是文档的不同表现形式,一个*.html语言的文件,在浏览器里和在
3、记事本中打开的表现形式是不同的但它们操作的是同一个文件这就是一个文档对应两视图411.1.2文档/视图结构在文档/视图结构中对数据进行管理和维护,数据保存在文档类的成员变量中文档类通过串行化的过程将数据保存到磁盘文件或数据库中文档类还可处理来自如菜单、工具栏按钮和加速键的WM_COMMAND消息除WM_COMMAND外,文档不能处理其它的Windows消息由此我们可以看出,命令消息可以被多种对象处理,这些对象除了窗口和视图外,还可以是文档、文档模板或应用程序本身这一点与Windows消息和控件通知消息不同,因为Win
4、dows消息和控件通知消息就只能被窗口和视图处理。通过调用文档和视图的接口将修改的信息反馈给文档类,实际的数据更新仍然是由文档来完成的在文档和用户之间起中介作用视图可以直接或间接的访问文档类中的成员变量,它从文档类中(而不是从存储介质中)将文档中的数据取出来,然后在屏幕上显示文档的数据它可以接收用户的输入,并接受用户的修改5文档/视图结构的工作机制视图通过GetDocument成员函数获得指向相关联的文档对象的指针通过该指针调用文档类的成员函数来从文档中读取数据视图把数据显示于计算机屏幕上用户通过与视图的交互来查看数
5、据并对数据进行修改视图通过相关联的文档类的成员函数将经过修改的数据传递给文档对象文档对象获得修改过的数据之后,对其进行必要的修改,最后保存到永久介质(如磁盘文件)中6SDI文档/视图应用程序示意图711.1.3SDI程序中文档、视图对象的创建过程SDI程序中框架窗口、文档和视图的创建是在应用程序对象的InitInstance()成员函数中通过文档模板类完成的:CSingleDocTemplate*pDocTemplate;//创建单文档模板类对象pDocTemplate=newCSingleDocTemplate(I
6、DR_MAINFRAME,RUNTIME_CLASS(CMyDoc),//CMyDoc是应用程序中的文档类RUNTIME_CLASS(CMainFrame),//CMainFrame是应用程序中的框架窗口RUNTIME_CLASS(CMyView));//CMyView是应用程序中的视图类AddDocTemplate(pDocTemplate);//加载文档模板类对象到文档模板列表…CCommandLineInfocmdInfo;ParseCommandLine(cmdInfo);//初始化CCommandLineI
7、nfo对象if(!ProcessShellCommand(cmdInfo))//据对象中的信息启动程序returnFALSE;m_pMainWnd->ShowWindow(SW_SHOW);m_pMainWnd->UpdateWindow();//显示和更新窗口811.1.4SDI程序的消息传递过程当用户选择了菜单项,单击了快捷键或工具条按钮,系统就会发送WM_COMMAND消息。框架窗口实际上是大多数WM_COMMAND消息的接受者,但WM_COMMAND消息还可以在视图、文档,甚至应用程序类中被处理。911.2D
8、oc/View框架的主要成员Doc/View框架虽然可以调用成百上千个不同的类,但是核心类只有五个:CWinAppCDocumentCViewCDocTemplateCFrameWnd1011.2.1CWinApp类CWinApp类代表主程序,CWinApp本身是不可见的,它负责维护进程的启动、终止、消息循环、命令行参数、资源管理成员描述m_p
此文档下载收益归作者所有