第10章文档.ppt

上传人:本田雅阁 文档编号:3122031 上传时间:2019-07-13 格式:PPT 页数:22 大小:277.52KB
返回 下载 相关 举报
第10章文档.ppt_第1页
第1页 / 共22页
第10章文档.ppt_第2页
第2页 / 共22页
第10章文档.ppt_第3页
第3页 / 共22页
第10章文档.ppt_第4页
第4页 / 共22页
第10章文档.ppt_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《第10章文档.ppt》由会员分享,可在线阅读,更多相关《第10章文档.ppt(22页珍藏版)》请在三一文库上搜索。

1、第10章 文档/视图结构的应用程序开发,文档/视图结构是在Visual C+中,使用MFC开发基于文档应用程序的基本框架。在这个框架中,数据的维护及其显示是分别由两个不同,但又彼此紧密相关的对象文档和视图负责的。 本章将主要围绕这一结构的各个环节展开讨论,因为理解这一结构的原理和机制对基于文档/视结构的MFC应用开发具有重要作用。,10.1 文档/视图结构,在本书的第2章中,已经简单介绍了文档/视图结构的基本概念,可以把文档看作是数据容器,而视图则可以看作是查看数据的窗口或是和数据发生交互的窗口。本节对MFC中,文档/视图结构的概念及其应用作进一步介绍。,10.1.1 文档/视图结构概述,MF

2、C文档/视结构是一种新型的应用程序结构,它的优点主要包括:实现了数据存储和显示的分离、提供了常用的标准操作界面以及支持打印预览功能等。一般情况下,采用文档/视结构的应用程序至少应由以下对象组成:应用程序对象(一般为CWinApp派生对象)、框架窗口对象(一般为CFrmeWnd派生对象)、文档对象(一般为CDocument派生对象)、视图对象(一般为CView派生对象)等。,10.1.2 文档/视图结构的分类,有两种类型的文档视结构程序:单文档界面(SDI)应用程序和多文档界面(MDI)应用程序。,10.2 文档/视图结构应用程序框架分析,正如前面章节的实例开发所介绍的,使用AppWizard可

3、以方便地创建文档/视图结构框架应用程序。本节将主要分析一下单文档应用程序框架的创建过程、结构和工作机制。,10.2.1 利用AppWizard创建单文档程序框架,使用AppWizard创建单文档程序框架在前面实例中多次用到,其各向导选项采用的是默认设置,本节将详细介绍各向导对话框中选项的含义。,10.2.2 程序框架中的主要类及相互关系,文档/视图结构的应用程序框架中,主要包含5个类:CWinApp类、CFrameWnd类、CView类、CDocument类和CDocTemplate类。,10.2.3 文档类、视图类核心函数及作用,MFC在CDocument类和CView类中提供了一些相对比较

4、重要的函数,它们负责完成二者之间的通信或者为各自提供独立的服务。 CDocument对象负责读入、保存和管理应用程序的数据。文档类允许向其中增加数据成员,其数据可以是任何类型的,如结构体,类或链表等。,10.2.4 新建、保存和打开的实现,在文档/视图结构的应用程序框架中,默认生成了“文件”下拉菜单,其中“新建”、“保存”和“打开”菜单命令项,系统自动生成了菜单命令的响应流程。,10.2.5 多文档应用程序框架,多文档界面应用程序简称MDI(Multiple Document Interface),它允许有多个文档类、视图类和多个文档模板CMultiDocTemplate存在,即可以建立多种文

5、档视图子框架窗口的关系。运行时允许打开多个MDI子框架窗口,拥有各自的文档和视图对象。(具体内容请参照本书),10.3 文档/视图结构应用程序的开发,本节将开发一个典型的文档/视图结构的绘图程序实例工程,通过实例,讲解有关视图对象和文档对象的具体开发过程和方法。,10.3.1 实现目标,本实例要创建一个单文档绘图程序,通过菜单或者工具栏按钮可以选择绘制直线、矩形和椭圆功能,而后通过鼠标操作实现在客户窗口的绘图。其绘图过程与Windows系统提供的绘图程序相似:单击鼠标左键作为绘图起点,拖动鼠标实现实时图形显示,是否鼠标左键后完成绘图操作。 在实现基本功能的基础上,进一步完善程序,实现诸如存档、

6、滚动视图窗口等操作。,10.3.2 创建基本的程序框架,本节实现单文档界面程序框架的创建,并添加必要的菜单和工具栏资源。,10.3.3 创建文档数据,最终用户在客户区绘制图形的数据是在文档类中通过一个链表来记录的。首先定义一个全局的数据结构CGraph,用以记录图形相关的数据。 (具体内容请参照本书),10.3.4 在视图类中实现绘图操作,在本书的第5章介绍鼠标编程时,其实例也实现了简单的绘图操作,但是由于其绘制过程在OnDraw函数中实现,因此无法实现窗口的重绘。而本实例中,所有的绘图操作均在CCh10Demo3View类的OnDraw函数中完成。,10.3.5 文档的序列化,序列化是将数据

7、从应用程序写入数据文件或从数据文件读入应用程序的过程。序列化在文档/视图结构中完成,当用户要保存或读出数据时发生序列化过程,当文档数据发生变化时,序列化会提示用户保存数据。,10.3.6 对例程数据进行序列化,在本节,实现对“Ch10Demo3”工程绘制的图形对象能够进行存盘操作。(具体内容请参照本书),10.3.7 让文档视结构程序支持滚动条,在前面实现的程序中,用户绘图区域还不能超过可视窗口。本节将实现给客户区窗口添加滚动条。 要通过滚动条滚动显示文档,还必须知道文档滚动到了什么位置;一旦用户拖动滚动条时要告诉视图改变在文档中的相应位置。所有这些,由MFC的CScrollView类来完成。

8、,10.4 窗口分割与多视,分割窗口将窗口分成几个部分,每个部分通常代表一个视图(也可以是具有子窗口标识的CWnd对象),又称窗格,如图10.32所示。如果想在一个窗口里面观察文档的不同部分,或者是在一个窗口里用不同类型的视图(比如用图表和表格)观察同一个文档,那么采用分割窗口是非常方便的。许多优秀的软件都采用了分割窗口技术,因此有必要掌握分割窗口的用法。,10.4.1 窗口分割基础知识,窗口可以实现动态分割和静态分割。(具体内容请参照本书),10.4.2 动态分割窗口的实现,文档/视图结构的应用程序中,实现动态分割窗口,可以有3种方法:(具体内容请参照本书),10.4.3 静态分割窗口与多视图的实现,通过静态分割窗口可以为不同的窗格指定不同的视图,相比动态分割,其实现要复杂一些。(具体内容请参照本书),

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1