第十章 文档视图结构

上传人:飞*** 文档编号:51582804 上传时间:2018-08-15 格式:PPT 页数:19 大小:527.50KB
返回 下载 相关 举报
第十章 文档视图结构_第1页
第1页 / 共19页
第十章 文档视图结构_第2页
第2页 / 共19页
第十章 文档视图结构_第3页
第3页 / 共19页
第十章 文档视图结构_第4页
第4页 / 共19页
第十章 文档视图结构_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《第十章 文档视图结构》由会员分享,可在线阅读,更多相关《第十章 文档视图结构(19页珍藏版)》请在金锄头文库上搜索。

1、联系方式:北京源智天下科技有限公司第十讲:文档视图结构 杨章伟 e-mail:1-2北京源智天下科技有限公司联系方式:课程内容安排文档视图结构概述 文档-视图相互作用的函数 单文档-视图应用程序结构 多文档-视图应用程序结构 综合练习 思考和习题 1-3北京源智天下科技有限公司联系方式:文档视图结构概述 文档视图结构是Visual C+ 6.0语言中使用MFC开发应 用程序的基本框架。在这个框架中,数据的维护及显示 是由两个不同但又彼此紧密相关的类文档类和视图 类分别负责的。 文档和视图是MFC应用程序的核心。Windows应用程 序除了处理数据外,还要将数据显示出来。在 Windows界面下

2、,数据的显示并非使用ANSI标准C+ 中的cin或cout指令。MFC采用了两个相互独立的类: CDocument类和CView类来负责数据的存储与显示。1-4北京源智天下科技有限公司联系方式:文档和视图的关系在文档视图结构中,文档是应用程序数据基本元素的集 合,它构成应用程序所使用的数据单元。另外它还对数 据进行管理和维护,通常数据被保存在文档类的成员变 量中。视图给用户提供了与文档中的数据进行交互的界 面,它把用户输入的信息转化为对文档中数据的操作, 将文档类的数据取出来,在屏幕上进行显示。1-5北京源智天下科技有限公司联系方式:文档视图应用程序 Visual C+ 6.0为为用户户提供了

3、两种基于文档视图类视图类 型的应应用程 序:单单文档界面(SDI)程序和多文档界面(MDI)程序。1-6北京源智天下科技有限公司联系方式:基本程序结构 文档视图结构是Microsoft为编程人员提供的一些类,以方便文件 和窗口的创建、显示、保存等。总体来讲,采用文档视图结构 的应用程序主要由以下4部分组成。 文档类(CDocument):负责应用程序数据的管理。它是所有应 用程序文档类的基类,提供了文档类所需要实现的最基本功能 的支持,为文档对象与框架窗口对象、视图对象等的交互提供 了基本框架。 视图类(CView):负责用户与文档之间的交互。它通过一个指 向其对应的文档对象的指针直接或间接地

4、获取和修改文档中的 数据。 框架结构类(CFrame):MFC应用程序的主框架是应用程序的主 窗口,子框架则提供了一个视图窗口,每个视图都能在其中运 行。此外,框架对象还可以处理应用程序菜单、状态栏和工具 栏,并接受视图中的命令消息。 主应用程序类(CWinApp):负责程序的运行和处理程序与 Windows之间的数据交互,并控制其他类。1-7北京源智天下科技有限公司联系方式:通常情况下,视图通过GetDocument成员函数获得指向相 关联文档对象的指针,并通过该指针调用文档类的成员函 数从文档中读取数据,并将数据显示在电脑屏幕上,用户 通过与视图的交互来查看数据并对其进行修改,如图10-4

5、 所示。 1-8北京源智天下科技有限公司联系方式:文档-视图相互作用的函数 文档-视图(Document-View)体系结构是MFC的一大 特色,它将数据的管理和显示隔离;文档对象是用来容 纳数据的,而视图对象则是用来显示数据并且对数据进 行编辑。 在文档、视图和应用程序框架之间包含了一系列非常复 杂的相互作用过程。为了了解这一过程,首先要熟悉有 关文档类和视图类中的几个重要的成员函数。1-9北京源智天下科技有限公司联系方式:GetDocument函数 该函数是视图类中的一个成员函数,可写为 CView:GetDocument。GetDocument函数返回的是指 向文档的指针,利用这个指针就

6、可以访问文档类或其派生 类的成员函数及公共数据成员。 当AppWizard生成一个派生的CView类的时候,它同时也创 建了一个特殊的typesafe(保护类型)的GetDocument 函数,读者可在工作区打开【ClassView】标签,单击打 开视图类CView,可看到该函数,如图10-7所示。1-10北京源智天下科技有限公司联系方式:1-11北京源智天下科技有限公司联系方式:视图与文档的交互流程如下: 当用户在视图中对文档数据进行编辑时,视图会调用其 自己的成员函数GetDocument来通知文档对象更新其 内部数据; 当文档对象修改数据之后,它会调用文档类的 UpdateAllView

7、s成员函数,通知所有与之联系的视图 进行强制更新显示,如图10-8所示。1-12北京源智天下科技有限公司联系方式:单文档视图应用程序(SDI) 一个单文档界面应用程序只有一个窗口。如果应用程序 依赖于磁盘文件的文档,那么一次只能加载一个文档, 类似于Windows的记事本程序。当读者创建的是单文档界面应用程序时,AppWizard会 自动地创建4个类。这4个类的类名构成与工程名有关。 当工程名长度在一定范围内,则类名构成为“C”+工程 名+类的类型,如名称为Test的工程的四个类为: CTestApp、CMainFrame、CTestView、CTestDoc ,它们分别为CWinApp类、C

8、FrameView类、 CDocument类和CView类的派生类。 当工程名长度超过该长度时,或工程名为中文时,类名 构成为“CMy”类的类型 1-13北京源智天下科技有限公司联系方式:例如,名称为“单文档视图应用程序”的工程,AppWizard创 建的四个类为:CMyApp、CMainFrame、CMytView、 CMyDoc,它们分别表示CWinApp类、CFrameView类 、CDocument类和CView类的派生类,如图10-9所示。 1-14北京源智天下科技有限公司联系方式:创建单文档视图应用程序 在AppWizard下,新建一个【MFC AppWizardexe】程序 ,打

9、开【MFC AppWizardStep 1】对话框,在其中选 中【Single document】单选按钮和【Document/View arthitechure support?】复选框,如不选中该复选框, MFC AppWizard不会自动为文档视图结构生成代码,如 图10-11所示。 1-15北京源智天下科技有限公司联系方式:多文档视图应用程序(MDI) 一个多文档界面应用程序拥有多个子窗口。每个窗口单独对 应于一个文档,类似于Microsoft Word程序。与单文档应用程序不同的是,当读者创建的是多文档界面应 用程序时,AppWizard的会自动创建五个类,其类的命 名规则与单文档应

10、用程序的规则相同。例如,创建工程 Test后,MFC AppWizard生成的五个类分别为: CTestApp、CMainFrame、CChildFrame、CTestDoc 、CTestView,分别为CWinApp类、CMDIFrameWnd 类、CMDIChildWnd类、CDocument类和CView类的派 生类。1-16北京源智天下科技有限公司联系方式:需要读者注意的是,多文档应用程序MDI的框架窗口类也是 CMainFrame类,但它是由CMDIFrameWnd类派生的, 不是SDI程序中的CFrameWnd类,其相应的文件也是 “MainFrame.h”和“MainFrame.

11、cpp”。而增加的文档框 架窗口类则是由CMDIChildWnd类派生的,其相应的文 件为“ChildFrm.h”和“ChildFrm.cpp”。其工作区如图10 -17所示。1-17北京源智天下科技有限公司联系方式:创建多文档视图应用程序 多文档视图应用程序的创建与单文档视图应用程序的创 建步骤基本相似,其可以实现在同一个应用程序中显示 不同窗体。 1-18北京源智天下科技有限公司联系方式:综合练习 该实例要实现的功能是创建一个文本阅读器,该阅读器 可打开*.txt类型的文本文件,并为其添加一个简单菜单 ,方便用户阅读文本文件。 1-19北京源智天下科技有限公司联系方式:思考和习题单文档应用程序和多文档应用程序的使用环境有何不同 ? 如何创建一个带简单文本编辑的单文档应用程序? 如何创建一个多文档应用程序? 创建一个多文档应用程序的文本编辑器,要求其具有文 本录入、编辑和删除的基本功能,并能打开当前已有的 文本文件。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 研究报告 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号