




已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第10章 文档/视图结构的应用程序开发,文档/视图结构是在Visual C+中,使用MFC开发基于文档应用程序的基本框架。在这个框架中,数据的维护及其显示是分别由两个不同,但又彼此紧密相关的对象文档和视图负责的。 本章将主要围绕这一结构的各个环节展开讨论,因为理解这一结构的原理和机制对基于文档/视结构的MFC应用开发具有重要作用。,10.1 文档/视图结构,在本书的第2章中,已经简单介绍了文档/视图结构的基本概念,可以把文档看作是数据容器,而视图则可以看作是查看数据的窗口或是和数据发生交互的窗口。本节对MFC中,文档/视图结构的概念及其应用作进一步介绍。,10.1.1 文档/视图结构概述,MFC文档/视结构是一种新型的应用程序结构,它的优点主要包括:实现了数据存储和显示的分离、提供了常用的标准操作界面以及支持打印预览功能等。一般情况下,采用文档/视结构的应用程序至少应由以下对象组成:应用程序对象(一般为CWinApp派生对象)、框架窗口对象(一般为CFrmeWnd派生对象)、文档对象(一般为CDocument派生对象)、视图对象(一般为CView派生对象)等。,10.1.2 文档/视图结构的分类,有两种类型的文档视结构程序:单文档界面(SDI)应用程序和多文档界面(MDI)应用程序。,10.2 文档/视图结构应用程序框架分析,正如前面章节的实例开发所介绍的,使用AppWizard可以方便地创建文档/视图结构框架应用程序。本节将主要分析一下单文档应用程序框架的创建过程、结构和工作机制。,10.2.1 利用AppWizard创建单文档程序框架,使用AppWizard创建单文档程序框架在前面实例中多次用到,其各向导选项采用的是默认设置,本节将详细介绍各向导对话框中选项的含义。,10.2.2 程序框架中的主要类及相互关系,文档/视图结构的应用程序框架中,主要包含5个类:CWinApp类、CFrameWnd类、CView类、CDocument类和CDocTemplate类。,10.2.3 文档类、视图类核心函数及作用,MFC在CDocument类和CView类中提供了一些相对比较重要的函数,它们负责完成二者之间的通信或者为各自提供独立的服务。 CDocument对象负责读入、保存和管理应用程序的数据。文档类允许向其中增加数据成员,其数据可以是任何类型的,如结构体,类或链表等。,10.2.4 新建、保存和打开的实现,在文档/视图结构的应用程序框架中,默认生成了“文件”下拉菜单,其中“新建”、“保存”和“打开”菜单命令项,系统自动生成了菜单命令的响应流程。,10.2.5 多文档应用程序框架,多文档界面应用程序简称MDI(Multiple Document Interface),它允许有多个文档类、视图类和多个文档模板CMultiDocTemplate存在,即可以建立多种文档视图子框架窗口的关系。运行时允许打开多个MDI子框架窗口,拥有各自的文档和视图对象。(具体内容请参照本书),10.3 文档/视图结构应用程序的开发,本节将开发一个典型的文档/视图结构的绘图程序实例工程,通过实例,讲解有关视图对象和文档对象的具体开发过程和方法。,10.3.1 实现目标,本实例要创建一个单文档绘图程序,通过菜单或者工具栏按钮可以选择绘制直线、矩形和椭圆功能,而后通过鼠标操作实现在客户窗口的绘图。其绘图过程与Windows系统提供的绘图程序相似:单击鼠标左键作为绘图起点,拖动鼠标实现实时图形显示,是否鼠标左键后完成绘图操作。 在实现基本功能的基础上,进一步完善程序,实现诸如存档、滚动视图窗口等操作。,10.3.2 创建基本的程序框架,本节实现单文档界面程序框架的创建,并添加必要的菜单和工具栏资源。,10.3.3 创建文档数据,最终用户在客户区绘制图形的数据是在文档类中通过一个链表来记录的。首先定义一个全局的数据结构CGraph,用以记录图形相关的数据。 (具体内容请参照本书),10.3.4 在视图类中实现绘图操作,在本书的第5章介绍鼠标编程时,其实例也实现了简单的绘图操作,但是由于其绘制过程在OnDraw函数中实现,因此无法实现窗口的重绘。而本实例中,所有的绘图操作均在CCh10Demo3View类的OnDraw函数中完成。,10.3.5 文档的序列化,序列化是将数据从应用程序写入数据文件或从数据文件读入应用程序的过程。序列化在文档/视图结构中完成,当用户要保存或读出数据时发生序列化过程,当文档数据发生变化时,序列化会提示用户保存数据。,10.3.6 对例程数据进行序列化,在本节,实现对“Ch10Demo3”工程绘制的图形对象能够进行存盘操作。(具体内容请参照本书),10.3.7 让文档视结构程序支持滚动条,在前面实现的程序中,用户绘图区域还不能超过可视窗口。本节将实现给客户区窗口添加滚动条。 要通过滚动条滚动显示文档,还必须知道文档滚动到了什么位置;一旦用户拖动滚动条时要告诉视图改变在文档中的相应位置。所有这些,由MFC的CScrollView类来完成。,10.4 窗口分割与多视,分割窗口将窗口分成几个部分,每个部分通常代表一个视图(也可以是具有子窗口标识的CWnd对象),又称窗格,如图10.32所示。如果想在一个窗口里面观察文档的不同部分,或者是在一个窗口里用不同类型的视图(比如用图表和表格)观察同一个文档,那么采用分割窗口是非常方便的。许多优秀的软件都采用了分割窗口技术,因此有必要掌握分割窗口的用法。,10.4.1 窗口分割基础知识,窗口可以实现动态分割和静态分割。(具体内容请参照本书),10.4.2 动态分割
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司大小周休息管理制度
- 旅游安全生产管理制度
- 公司资料防外泄管理制度
- 公司员工洗澡间管理制度
- 施工现场积分管理制度
- 天然气销售定价管理制度
- 亚马逊公司运营管理制度
- 旅游规划公司管理制度
- 律师事务所奖惩管理制度
- 殡葬入行考试题及答案
- 智慧校园大数据可视化分析平台建设方案
- 110kv升压站施工组织设计
- “安全生产课件:如何预防工伤事故”
- 《教育学原理》马工程教材第二章教育与社会发展
- 西藏农村公路管理办法
- 野外生存优秀课件
- 国际投资学教程(第四版)綦建红答案
- 福建省福州市福建师大附中2023年自主招生样卷--数学试卷
- GB/T 16622-2022压配式实心轮胎规格、尺寸与负荷
- GB/T 3620.1-2016钛及钛合金牌号和化学成分
- GB/T 2878.2-2011液压传动连接带米制螺纹和O形圈密封的油口和螺柱端第2部分:重型螺柱端(S系列)
评论
0/150
提交评论