文档视图结构的应用程序开发

文档视图结构的应用程序开发

ID:39454368

大小:279.50 KB

页数:22页

时间:2019-07-03

文档视图结构的应用程序开发_第1页
文档视图结构的应用程序开发_第2页
文档视图结构的应用程序开发_第3页
文档视图结构的应用程序开发_第4页
文档视图结构的应用程序开发_第5页
资源描述:

《文档视图结构的应用程序开发》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

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

2、构的概念及其应用作进一步介绍。10.1.1文档/视图结构概述MFC文档/视结构是一种新型的应用程序结构,它的优点主要包括:实现了数据存储和显示的分离、提供了常用的标准操作界面以及支持打印预览功能等。一般情况下,采用文档/视结构的应用程序至少应由以下对象组成:应用程序对象(一般为CWinApp派生对象)、框架窗口对象(一般为CFrmeWnd派生对象)、文档对象(一般为CDocument派生对象)、视图对象(一般为CView派生对象)等。10.1.2文档/视图结构的分类有两种类型的文档视结构程序:单文档界面(SDI)应用

3、程序和多文档界面(MDI)应用程序。10.2文档/视图结构应用程序框架分析正如前面章节的实例开发所介绍的,使用AppWizard可以方便地创建文档/视图结构框架应用程序。本节将主要分析一下单文档应用程序框架的创建过程、结构和工作机制。10.2.1利用AppWizard创建单文档程序框架使用AppWizard创建单文档程序框架在前面实例中多次用到,其各向导选项采用的是默认设置,本节将详细介绍各向导对话框中选项的含义。10.2.2程序框架中的主要类及相互关系文档/视图结构的应用程序框架中,主要包含5个类:CWinApp类

4、、CFrameWnd类、CView类、CDocument类和CDocTemplate类。10.2.3文档类、视图类核心函数及作用MFC在CDocument类和CView类中提供了一些相对比较重要的函数,它们负责完成二者之间的通信或者为各自提供独立的服务。CDocument对象负责读入、保存和管理应用程序的数据。文档类允许向其中增加数据成员,其数据可以是任何类型的,如结构体,类或链表等。10.2.4新建、保存和打开的实现在文档/视图结构的应用程序框架中,默认生成了“文件”下拉菜单,其中“新建”、“保存”和“打开”菜单命

5、令项,系统自动生成了菜单命令的响应流程。10.2.5多文档应用程序框架多文档界面应用程序简称MDI(MultipleDocumentInterface),它允许有多个文档类、视图类和多个文档模板CMultiDocTemplate存在,即可以建立多种文档——视图——子框架窗口的关系。运行时允许打开多个MDI子框架窗口,拥有各自的文档和视图对象。(具体内容请参照本书)10.3文档/视图结构应用程序的开发本节将开发一个典型的文档/视图结构的绘图程序实例工程,通过实例,讲解有关视图对象和文档对象的具体开发过程和方法。10.3

6、.1实现目标本实例要创建一个单文档绘图程序,通过菜单或者工具栏按钮可以选择绘制直线、矩形和椭圆功能,而后通过鼠标操作实现在客户窗口的绘图。其绘图过程与Windows系统提供的绘图程序相似:单击鼠标左键作为绘图起点,拖动鼠标实现实时图形显示,是否鼠标左键后完成绘图操作。在实现基本功能的基础上,进一步完善程序,实现诸如存档、滚动视图窗口等操作。10.3.2创建基本的程序框架本节实现单文档界面程序框架的创建,并添加必要的菜单和工具栏资源。10.3.3创建文档数据最终用户在客户区绘制图形的数据是在文档类中通过一个链表来记录的

7、。首先定义一个全局的数据结构CGraph,用以记录图形相关的数据。(具体内容请参照本书)10.3.4在视图类中实现绘图操作在本书的第5章介绍鼠标编程时,其实例也实现了简单的绘图操作,但是由于其绘制过程在OnDraw函数中实现,因此无法实现窗口的重绘。而本实例中,所有的绘图操作均在CCh10Demo3View类的OnDraw函数中完成。10.3.5文档的序列化序列化是将数据从应用程序写入数据文件或从数据文件读入应用程序的过程。序列化在文档/视图结构中完成,当用户要保存或读出数据时发生序列化过程,当文档数据发生变化时,序

8、列化会提示用户保存数据。10.3.6对例程数据进行序列化在本节,实现对“Ch10Demo3”工程绘制的图形对象能够进行存盘操作。(具体内容请参照本书)10.3.7让文档视结构程序支持滚动条在前面实现的程序中,用户绘图区域还不能超过可视窗口。本节将实现给客户区窗口添加滚动条。要通过滚动条滚动显示文档,还必须知道文档滚动到了什么位置;一旦用户拖动滚

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。