- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6章MFC文档视结构
第6章 MFC文档/视结构
本节内容较多,共分12节。
6.1 MFC单文档应用程序结构
6.2 文档对象
6.3 视的对象
6.4 文档和视的联系
6.5 框架窗口
6.6 文档模板
6.7 分析单文档应用程序
6.8 创建单文档应用程序实例
6.9 多文档应用程序简介
6.10 消息处理映射规则
6.11 各对象之间关系综述
6.12 本章小结
主要介绍如下内容:
应用程序的目的就是对一组数据施加一定的操作。当进行应用程序逻辑设计时,需要考虑应用程序的数据是如何组织的,又是如何展示在用户面前并与用户交互的。
MFC使用文档/视(Document/View)结构提供单一、一致的方法协调应用程序数据和数据的显示,通过视和文档的划分实现了数据管理和数据显示的分离。
因为利用MFC文档/视结构编写应用程序时,应用程序向导自动产生的代码将为应用程序完成很多常规的操作,因此程序员可以省去很多重复劳动,把精力集中在应用程序的主体,也就是应用程序数据的处理上。
用文档/视结构编写应用程序,最基本的是要知道编译器已经完成了哪些操作,还需要添加哪些操作,需要修改哪些操作;更高的要求就是要搞清楚编译器是如何实现这些操作的,以便可以修改相应的地方以实现特定的功能。
利用AppWizard自动生成文档/视结构的单文档项目Test,Test至少应由CTestApp、CTestDoc、CtestView、CmainFrame和CAboutDlg几个部分组成,图6.1是其类结构图。
6.1 MFC单文档应用程序结构
图6.1 向导产生的Test项目的类
图中虚框内是向导以项目名字Test为依据,为应用程序派生的类。
CAboutDlg提供一个文本编辑框,可以填写信息或者直接采用。它也产生了基本的菜单和工具栏内容,具有默认的状态栏,这里均不涉及。
下面简要说明文档/视结构派生类的意义和作用。
① CTestDoc类对应文档,文档可以理解为应用程序数据的抽象集合,它负责应用程序数据的存储,包括和磁盘文件的数据交换。
② CTestView类对应视,它是应用程序数据在用户面前的表达,负责应用程序数据的显示以及处理用户对数据的操作。
③ CMainFrame类对应窗口,它是视的容器,在高级应用程序中它还容纳了工具栏、状态栏等。
④ CTestApp类由CWinApp派生,它对应对象并充当消息传递中心和全部应用程序对象的容器。
CWinApp对象还拥有并控制文档模板,这就是如图6.1中的CSingleDocTemplate 和CDocTemplate。
文档模板产生文档、框架窗口及视。
各对象的作用示意图见图6.2。
图6.2 各对象的作用示意图
各个对象都是从相应的基类派生而来的,而且它们相互之间也存在一定的联系,具体如表6.1所示。
由此可见,Document/View 是MFC 的基石,其最重要的一个特征就是它能够将管理数据的程序代码和负责数据显示的程序代码分离开来。
要把数据管理和显示方法分离开来,需要考虑程序的哪一部分拥有数据和负责更新数据及显示数据;如何能使数据的更改具有一致性;如何将数据存到永久存储装置上;如何管理使用者接口。尤其是呈现不同形态的数据可能需要不同的使用者接口,而一个程序可能要管理多种形态的数据。
表6.1 对象的基类及其相互联系
?
MFC中的Document就是数据,它在CDocument 里面被实例化。
CDocument 本身只是提供一个框架。当开发自己的应用程序时,应用它派生出自己的Document 类,并在类中声明一些数据成员,用来接纳数据。需要时还得改写专门负责档案读写动作的Serialize 函数。事实上,AppWizard已经把程序的框架都准备好了,在指定位置添加代码即可。
CDocument对象提供视对象显示的信息,但它总是驻留在应用程序界面后面,相当于View用来显示的容器。
6.2 文档对象
1. 基类CDocument
CDocument类在MFC中的层次结构的位置,如
图6.3所示。CDocument对象提供视对象显示的信息,但它总是驻留在应用程序界面后面,相当于View用来显示的容器。
CDocument 类为文档建立及存档提供支持并提供应用程序用于控制其数据的接口。
由于CDocument派生自CObject,所以它就有了CObject所支持的一切性质,包括RTTI、Dynamic Creation和Serialization。
CDocument 也派生自CCmdTarget,所以它可接收来自菜单或工具栏的WM_COMMAND 消息。
图6.3 CDocument在层次结构中的位置
CDocument 类有很多有用的成员
您可能关注的文档
最近下载
- 临床心理门诊各项规章制度.pdf VIP
- T_CAGHP 041-2018 崩塌防治工程施工技术规范(试行).docx VIP
- 成立医疗技术临床应用管理委员会的通知(20210923160840).docx VIP
- 20230519成都万象城 项目介绍2023(压缩).pdf VIP
- 化妆品车间设计规范.docx
- IEC60335-1-2020中文版-家用和类似用途电器的安全第1部分:通用要求(中文翻译稿).docx VIP
- 清洁能源利用技术报告-天然气压差发电技术研究与项目规划.pdf VIP
- 垃圾焚烧工艺流程图2018.pdf VIP
- 最新弃标函模板.docx VIP
- 腾势-腾势X-产品使用说明书-经典版(插混)-QCJ6490ST6HEV-腾势X插电式混动SUV用户手册20191212.pdf VIP
文档评论(0)