- 1、本文档共107页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
文档、视图
第五章 文档与视图 本章内容 文档与视图结构的工作原理 菜单编程 鼠标消息处理 工具栏编程 状态栏编程 文档的读写操作机制 Windows应用程序界面特点 标题栏 主菜单 工具栏 客户区 状态栏 不同程序的相同菜单项和工具栏按钮表示相同的操作。 MFC文档/视图结构数据处理工作分工 文档/视图结构把数据从用户对数据的观察中分离了出来。 文档用于管理和维护数据 视图用来显示和编辑数据 文 档 文档的概念在MFC应用程序中的适用范围很广,一般说来,文档是能够被逻辑地组合的一系列数据,包括文本、图形、图象和表格数据。 一个文档代表了用户存储或打开的一个文件单位。 文档的作用: 把对数据的处理从对用户界面的处理中分离出来,集中处理数据,同时提供了一个与其它类交互的接口。 负责数据的读写操作,数据通常被保存在文档类的成员变量中,文档类通过一个称为序列化的成员函数将成员变量的数据保存到磁盘文件中。MFC应用程序为数据的序列化提供了默认支持。 视 图 从用户的角度上看,视图实际上就是一个普通的窗口。人们可以改变它的尺寸,对它进行移动,也可以随时关闭它。 从程序员的角度看,视图实际上是一个从MFC库中的CView类派生出来的类的对象。 视图是文档在屏幕上的一个映像。一个视图总是与一个文档对象相关联,用户通过与文档相关联的视图与文档进行交互。当用户打开一个文档时,应用程序就会创建一个与之相关联的视图。 视图的作用: 负责显示和编辑文档数据,但不负责存储。用户对数据的编辑需要依靠窗口上的鼠标与键盘操作才得以完成,这些消息都是由视图类接收后进行处理或通知文档类,如收到窗口刷新消息时调用视图类的成员函数OnDraw()显示文档内容。 视图还可在打印机上输出。 文档、视图、框架窗口之间的关系 一个视图是一个没有边框的窗口,它位于主框架窗口中的客户区。 视图是文档对外显示的窗口,但它并不能完全独立,它必须依存在一个框架窗口内。 一个视图只能拥有一个文档,但一个文档可以同时拥有多个视图。 文档/视图结构的优点 最明显的优点:允许对同一数据实现多视。 把数据处理类从用户界面处理类中分离出来,使得每一个类都能集中地执行一项工作。 把Windows程序通常要做的工作分成若干个定义好的类,有助于应用程序的模块化,程序也易于扩展,编程时只需修改所涉及的类。 注 意 文档/视图结构并没有完全要求所有数据都属于文档类。 视图类也可以有自己的数据。 如果在视图类中不定义任何数据,在需要时都从文档类中获取,这样做会影响程序的效率。 文档与视图之间的相互作用 1 .CView类的成员函数GetDocument() 2.CDocument类的成员函数UpdateAllViews() 多文档 文档模板 注册文档模板: 菜单设计 1. 建立菜单资源 2.建立消息映射----添加菜单命令处理函数 将菜单命令映射到哪个类? 利用ClassWizard添加菜单命令处理函数 例 为程序DrawCoin添加菜单命令处理函数。 定义成员变量m_nCoins并初始化: 在客户区画出硬币: 3. 何谓更新命令用户界面消息? 菜单设计的基本步骤 弹出式菜单 有关弹出式菜单的消息处理 例 为程序DrawCoin添加弹出式菜单。 鼠标消息处理 鼠标消息 鼠标消息处理函数参数 鼠标消息处理函数参数 鼠标消息处理举例:绘图程序 MyDraw程序存在的问题 在Line.cpp中编写成员函数的实现代码: 3.存储线段采用什么数据结构? 使用MFC数组类模板CTypedPtrArray 5. 修改OnDraw()函数 状态栏 MFC应用程序默认的状态栏分为四个部分: 例:修改程序DrawCoin在状态栏显示硬币的数量 文档的读写 序列化 磁盘文件 归 档 序列化函数Serialize() MFC AppWizard向导生成的Seralize()函数 MFC应用程序的序列化 2. MFC类的序列化必须满足的四个条件: 例 完善绘图程序MyDraw,以便能将绘制好的图形保存在磁盘上。 应用举例: 使用不同视图 滚动视图 2.编程时可使用CScrollView类的一些常用成员函数 3. 滚动视图程序的2种设计方法: 多视图 MFC实现多视图的基本方法和步骤: 1. CDocument::OnFileSave()完成的工作: 文档对象获取一个当前文件CFile指针,创建一个CArchive对象; 文档对象调用成员函数Serialize(),并把创建的CArchive对象作为参数传递给函数Serialize(); Serialize()函数根据函数IsStoring()的返回值(true)执行if语句的第一个分支,调用要读写对象的序列化函数Serialize(),而读写对象使
您可能关注的文档
最近下载
- 2024年高校红十字应急救护大赛理论考试题库(含答案).docx
- 水闸安全鉴定投标方案(技术标).pdf
- 广东省2007、2008、2014、2015年专插本考试《生理学》真题(未含答案版).pdf
- 碰焊机焊接作业指导书.doc
- 2023年广西林业局所属事业单位招聘考试真题.docx
- 2025中考复习数学考点突破练习课件:第一章 数与式 考点2 整式.pptx
- 1-05沥青混凝土心墙鉴定书(3.18新).doc VIP
- 苏科版2022-2023二年级上册劳动与技术《06树叶书签》课件.pptx
- GB15618-2018 土壤环境质量 农用地土壤污染风险管控标准.docx
- 谈判采购文件示范文本.docx
文档评论(0)