文档视图结构.ppt
《文档视图结构.ppt》由会员分享,可在线阅读,更多相关《文档视图结构.ppt(31页珍藏版)》请在三一办公上搜索。
1、第7章 文档视图结构 定制程序框架,张扬应用程序个性,教学内容7.1 文档视图结构7.2 文档视图结构的主要组成类7.3 多视图及窗口切分7.4 文件操作7.5 综合实例宾馆管理系统的完善7.6 小结 思考与练习,7.1 文档视图结构,7.1.1 文档视图的概念,7.1 文档视图结构,7.1.2文档模板在文档视图结构中,文档、框架窗口与视图通过文档模板联系在一起。文档模板负责在运行时创建(动态创建)文档、视图和框架窗口。一个应用程序对象可以管理一个或多个文档模板,每个文档模板用于动态创建和管理一个或多个同类型的文档(这取决于应用程序是SDI程序还是MDI程序)。MFC的文档模板类CDocTem
2、plate用于支持文档模板操作。由于文档模板类是一个抽象基类,因此不能直接用其声明对象,只能使用其派生类。对于单文档界面程序,应使用CSingleDocTemplate(单文档模板类),对于一个多文档界面程序,使用CMultipleDocTemplate(多文档模板类)。,7.1 文档视图结构,7.1.3 文档类1、文档类的成员函数 获得视图列表中与本文档关联的第一个视图的位置函数:virtual POSITION GetFirstViewPosition()const;获得下一个本文档关联的视图的位置到rPosition中:virtual CView*GetNextView(POSITION
3、,7.1 文档视图结构,7.1.3 文档类1、文档类的成员函数 设置存取文档的默认路径(与文档(窗口)的标题)virtual void SetPathName(LPCTSTR lpszPathName,BOOL bAddToMRU=TRUE);判断文档在最后一次存储后是否被修改过,若被修改过,则在用户关闭文档窗口或应用程序时,会提示保存文件BOOL IsModified();设置文档在最后一次存储后是否被修改过void SetModifiedFlag(BOOL bModified=TRUE);更新所有视图void UpdateAllViews(CView*pSender,LPARAM lHin
4、t,CObject*pHint);,7.1 文档视图结构,7.1.3 文档类2、文档的序列化用户处理的数据往往需要存盘作永久备份。将文档类中的数据成员变量的值保存在磁盘文件中,或者将存储的文档文件中的数据读取到相应的成员变量中。这个过程称为序列化(Serialize)。序列化实质上就是让对象将其当前的状态(由其成员变量的值表示)写入到永久性存储体(通常是指磁盘)中,以后还可以从永久性存储体中读取对象的状态(载入),从而重建对象。这种对象的保存和恢复的过程称为“序列化”。序列化是一种实现对象持久性(Persistent)的机制,它是一个将对象中的数据转换成一个单一元素(通常是Stream)的过程
5、。,7.1 文档视图结构,7.1.3 文档类2、文档的序列化,7.1 文档视图结构,7.1.4 框架窗口类,7.1 文档视图结构,7.1.5 视图类1、CView类CView是用户视图类的缺省基类,也是其他各种MFC视图类的基类。视图类CView是窗口类CWnd类的派生类。视图类对象完全覆盖框架窗口的用户区,没有自己的边框。视图规定了用户查看文档数据以及同数据交互的方式。视图类有几个重要的成员函数。GetDocument()成员函数用于从文档类中获取数据值。实际上,该函数提供一个指向文档派生类对象的指针,通过该指针可访问文档派生类的公有成员。例如:GetDocument()AddBubble(
6、rectBubble);正因为如此,文档类的数据成员只能声明为公有的,而不能象面向对象技术所要求的那样,将所有的数据成员均声明为私有成员。由于文档类和视图类的关系十分密切,这样做可以简化程序设计,并不会因封装性被破坏而造成混乱。在视图类中,用OnDraw()成员函数更新视图,其用法类似窗口类的OnPaint()函数。所不同的是,OnDraw()函数有一个指向CDC类的指针参数,通过该参数可以直接向视图输出。,7.1 文档视图结构,7.1.5 视图类2、CEditView类CEditView类对象是一种视图,像CEdit类一样,它也提供窗口编辑控制功能,可以用来执行简单文本操作,如打印、查找、替
7、换、剪贴板的剪切、复制和粘贴等。由于CEditView类自动封装上述功能的映射函数,因此只要在文档模板中使用CEditView类,那么应用程序的“编辑”菜单和“文件”菜单里的菜单项都可自动激活。3、CRichEditView类CRichEditView类使用了复合文本编辑控件,因此它支持混合字体格式和更大数据量的文本。CRichEditView类被设计成与CRichEditDoc和CRichEditCntrItem类一起使用,它们可实现一个完整的ActiveX包容器应用程序。4、CFormView类CFormView类是一个非常有用的视图类,它具有许多无模式对话框的特点。像CDialog的派生
8、类一样,CFormView的派生类也和相应的对话框资源相联系,它也支持对话框数据交换和对话框数据确认(DDX和DDV)。,7.1 文档视图结构,7.1.5 视图类5、CHtmlView 类CHtmlView 类是在文档视图结构中提供WebBrowser控件的功能。WebBrowser控件可以浏览网址,也可以作为本地文件和网络文件系统的窗口,它支持超级链接、统一资源定位(URL)导航器并维护历史列表等。6、CScrollView类CScrollView类不仅能直接支持视图的滚动操作,而且还能管理视口的大小和映射模式,并能响应滚动条消息、键盘消息以及鼠标滚轮消息。,7.2 文档视图结构的主要组成类
9、,7.2.1 单文档应用程序的组成类1、示例程序的创建2、单文档应用程序的组成类向导生成的一个典型的单文档应用程序包括一个应用程序类CMyEditorApp、一个主框架窗口类CMainFrame、一个文档类CMyEditorDoc、一个视图类CMyEditorView、一个“关于”对话框类CAboutDlg。,7.2 文档视图结构的主要组成类,7.2.2 多文档应用程序的组成类1、示例程序的创建2、多文档应用程序的组成类向导生成的一个典型的多文档应用程序包括一个应用程序类CMyWordApp、一个主框架窗口类CMainFrame、一个子框架窗口类CChildFrame、一个文档类CMyWord
10、Doc、一个视图类CMyWordView、一个“关于”对话框类CAboutDlg。由于该程序可以是复合文档的容器,即该程序可以嵌入别的应用程序对象,故该类中还有一个丰富文本条目类CMyWordCntrItem。,7.2 文档视图结构的主要组成类,7.2.2 多文档应用程序的组成类,7.2 文档视图结构的主要组成类,7.3.3 文档视图结构中各对象之间的关系1、文档视图结构中各个对象之间的关系,7.2 文档视图结构的主要组成类,7.3.3 文档视图结构中各对象之间的关系1、文档视图结构中各个对象之间的关系,7.2 文档视图结构的主要组成类,7.3.3 文档视图结构中各对象之间的关系2、文档视图结
11、构中各对象之间的通信(1)获取应用程序类对象的指针获取应用程序类对象的指针可以使用全局函数AfxGetApp(),这个函数的原型如下:CWinApp*AfxGetApp();这个全局函数可以在任何需要的时候使用,函数的返回值是指向应用程序基类CWinApp的指针。(2)获取主框架窗口类对象的指针获取主框架窗口类对象的指针可以使用全局函数AfxGetMainWnd()获取主窗口对象的指针,函数的原型如下:CWnd*AfxGetMainWnd();(3)从文档类中获取视图对象指针在文档类中有一个与其关联的各视图对象的列表,并可通过CDocument类的成员函数GetFirstViewPositio
12、n和GetNextView来定位相应的视图对象。GetFirstViewPosition函数用来获得与文档类相关联的视图列表中第一个可见视图的位置,GetNextView函数用来获取指定视图位置的视图类指针,并将此视图位置移动到下一个位置,若没有下一个视图,则视图位置为NULL。它们的原型如下:virtual POSITION GetFirstViewPosition()const;virtual CView*GetNextView(POSITION,7.3 多视图及窗口切分,7.3.1 多视图MFC支持在同一文档上使用多个视图的3种通用模式,这些模式是:(1)在各自MDI文档窗口中包含同一个
13、视图类的多个视图对象。用户有时需要应用程序能为同一个文档打开另一个文档窗口,以便能同时使用两个文档窗口来查看文档的不同部分内容。用MFC AppWizard创建的多文档应用程序支持这种模式,当用户选择“窗口”菜单的“新建窗口”命令时,系统就会为第一个文档窗口创建一个副本。(2)在同一个文档窗口中包含同一个视图类的多个视图对象。这种模式实际上是使用“切分窗口”机制使SDI应用程序具有多视的特征。(3)在单独一个文档窗口中包含不同视图类的多个视图对象。在该模式下,多个视图共享同一个文档窗口。它有点象“切分窗口”,但由于视图可由不同的视图类构造,所以同一个文档可以有不同的显示方法。例如,同一个文档可
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 文档 视图 结构
链接地址:https://www.31ppt.com/p-6297863.html