- 1、本文档共135页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]《C及Windows可视化程序设计刘振安著》第13章
第13章 MFC文档/视结构 13.1 MFC单文档应用程序结构 13.2 文档对象 13.3 视的对象 13.4 文档和视的联系 13.5 框架窗口 13.6 文档模板 13.7 分析单文档应用程序 13.8 创建单文档应用程序实例 13.9 多文档应用程序简介 13.10 消息处理映射规则 13.11 各对象之间关系综述 13.12 本章小结 实验 习题 应用程序的目的就是对一组数据施加一定的操作。当进行应用程序逻辑设计时,需要考虑应用程序的数据是如何组织的,又是如何展示在用户面前并与用户交互的。 MFC使用文档/视(Document/View)结构提供单一、一致的方法协调应用程序数据和数据的显示,通过视和文档的划分实现了数据管理和数据显示的分离。 因为利用MFC文档/视结构编写应用程序时,应用程序向导自动产生的代码将为应用程序完成很多常规的操作,因此程序员可以省去很多重复劳动,把精力集中在应用程序的主体也就是应用程序数据的处理上。 用文档/视结构编写应用程序,最基本的是要知道编译器已经完成了哪些操作,还需要添加哪些操作,需要修改哪些操作;更高的要求就是要搞清楚编译器是如何实现这些操作的,以便可以修改相应的地方以实现特定的功能。 13.1 MFC单文档应用程序结构 利用AppWizard自动生成文档/视结构的单文档项目Test,Test至少应由CTestApp、CTestDoc、CtestView、CmainFrame和CAboutDlg几个部分组成,图13.1是其类结构图。 图13.1 向导产生的Test项目的类 图中虚框内是向导以项目名字Test为依据,为应用程序派生的类。 CAboutDlg提供一个文本编辑框,可以填写信息或者直接采用。它也产生了基本的菜单和工具栏内容,具有默认的状态栏,这里均不涉及。 下面简要说明文档/视结构派生类的意义和作用。 ① CTestDoc类对应文档,文档可以理解为应用程序数据的抽象集合,它负责应用程序数据的存储,包括和磁盘文件的数据交换。 ② CTestView类对应视,它是应用程序数据在用户面前的表达,负责应用程序数据的显示以及处理用户对数据的操作。 ③ CMainFrame类对应窗口,它是视的容器,在高级应用程序中它还容纳了工具栏、状态栏等。 ④ CTestApp类由CWinApp派生,它对应对象并充当消息传递中心和全部应用程序对象的容器。 CWinApp对象还拥有并控制文档模板,这就是如图13.1中的CSingleDocTemplate 和CDocTemplate。 文档模板产生文档、框架窗口及视。 各对象的作用示意图见图13.2。 图13.2 各对象的作用示意图 各个对象都是从相应的基类派生而来的,而且它们相互之间也存在一定的联系,具体如表13.1所示。 由此可见,Document/View 是MFC 的基石,其最重要的一个特征就是它能够将管理数据的程序代码和负责数据显示的程序代码分离开来。 要把数据管理和显示方法分离开来,需要考虑程序的哪一部分拥有数据和负责更新数据及显示数据;如何能使数据的更改具有一致性;如何将数据存到永久存储装置上;如何管理使用者接口。尤其是呈现不同形态的数据可能需要不同的使用者接口,而一个程序可能要管理多种形态的数据。 13.2 文档对象 MFC中的Document就是数据,它在CDocument 里面被实例化。 CDocument 本身只是提供一个框架。当开发自己的应用程序时,应用它派生出自己的Document 类,并在类中声明一些数据成员,用来接纳数据。需要时还得改写专门负责档案读写动作的Serialize 函数。事实上,AppWizard已经把程序的框架都准备好了,在指定位置添加代码即可。 CDocument对象提供视对象显示的信息,但它总是驻留在应用程序界面后面,相当于View用来显示的容器。 1. 基类CDocument CDocument类在MFC中的层次结构的位置,如 图13.3所示。 CDocument 类为文档建立及存档提供支持并提供应用程序用于控制其数据的接口。 由于CDocument派生自CObject,所以它就有了CObject所支持的一切性质,包括RTTI、Dynamic Creation和Serialization。 CDocument 也派生自CCmdTarget,所以它可接收来自菜单或工具栏的WM_COMMAND 消息。 CDocument 类有很多有用的成员函数,下面介绍几个最常用的成员函数。 图13.3 CDocument在层次结构中的位置 (1) Serialize()函数 函数原型: virtual void Serialize(CArchive ar); 函数作用: 通过
您可能关注的文档
- [工学]CH5 三相变压器的异常运行.ppt
- [工学]CH7- 网络安全 电子简明 2007.ppt
- [工学]Ch8_第八章 Switch-Mode dc-ac Inverters.ppt
- [工学]Chap4_new.pdf
- [工学]chapter17 同步发电机对称运行时的特性.ppt
- [工学]chapter- 7 Heat transfer.ppt
- [工学]chapter3_电路的暂态分析.ppt
- [工学]Chapter6-消息中间件技术.pdf
- [工学]C程序设计课后答案.doc
- [工学]C语言 C程序设计.ppt
- 2023咸阳职业技术学院招聘笔试真题参考答案详解.docx
- 2023四川化工职业技术学院招聘笔试真题及参考答案详解.docx
- 2023哈尔滨职业技术学院招聘笔试真题及参考答案详解.docx
- 2023商洛职业技术学院招聘笔试真题及答案详解1套.docx
- 2023呼伦贝尔职业技术学院招聘笔试真题参考答案详解.docx
- 2023南阳农业职业学院招聘笔试真题参考答案详解.docx
- 2023天津公安警官职业学院招聘笔试真题带答案详解.docx
- 2023年上海电机学院招聘笔试真题参考答案详解.docx
- 2023年四川艺术职业学院招聘笔试真题参考答案详解.docx
- 2023安徽体育运动职业技术学院招聘笔试真题及答案详解一套.docx
最近下载
- 中医内科学课件:胃痛.ppt
- 广州市海绵城市建设技术指引及标准图集(试行).pdf
- 基于SpringBoot技术的论坛系统设计与实现.docx
- 本科毕业设计—110kv变电站电气一次部分设计 发电厂课程设计报告.doc VIP
- 世界甲状腺日甲状腺健康科普PPT.pptx VIP
- 电力线路维保服务投标方案(技术方案).pdf VIP
- 2024-2025学年中职思想政治中国特色社会主义高教版(2023)教学设计合集.docx
- 第32课《让思维活跃起来》课件2024北师大版心理健康七年级下册 .ppt
- 山东省(烟台市、德州市)2025届高三高考适应性测试化学试题及答案.docx VIP
- 黑龙江高职高专:畜牧兽医专业建设方案.doc
文档评论(0)