第16章单文档与多文档.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第16章 SDI MDI VC++面向对象与可视化程序设计 第16章 单文档与多文档 16.1.1单文档界面与多文档界面 * VC的MFC库支持三种不同的应用程序 单文档界面(SDI) 多文档界面(MDI) 基于对话框的应用程序 SDI的应用程序 只有一个窗口 MDI的应用程序每次 可以读写多个文件或 文档,可同时对多个 文档进行操作,可以 有多个子窗口 主要差别 在创建SDI界面的应用程序时,不生成CChildFrame类,CMainFrame类的基类为CFrameWnd 在创建MDI界面的应用程序时,CMainFrame类的基类为CMDIFrameWnd 使用AppWizard创建SDI和MDI界面的应用程序的过程几乎完全一样 由于每一个文档可以有多个视图,但每个视图只能对应于一个确定的文档 多文档程序需要解决的问题仅仅是多个文档的数据管理方法的问题 多文档程序,最初的文档模板只支持主窗口,但每次打开一个新文档时都调用CDocument的函数OnNewDocument,建立一个由CMDIChildWnd派生的新的MDI子窗口,这些窗口中保存着各种已打开的文档,所有的细节都由MFC库处理。 视图是文档的不同表现形式 比如,一个*.html文件,在 浏览器里和在记事本中打开 的表现形式是不同的,但它 们操作的是同一个文件,这 就是一个文档对应两视图 在文档/视图结构中 对数据进行管理和维护,数据保存在文档类的成员变量中 文档类通过串行化 的过程将数据保存 到磁盘文件或数据库中 文档类还可处理来自如 菜单、工具栏按钮和加 速键的WM_COMMAND消息 除WM_COMMAND外,文档不 能处理其它的Windows消息 由此我们可以看出,命令消息可以被多种对象处理,这些对象除了窗口和视图外,还可以是文档、文档模板或应用程序本身 这一点与Windows消息 和控件通知消息不同, 因为Windows消息和控 件通知消息就只能被 窗口和视图处理。 通过调用文档和视图的接口将修改的信息反馈给文档类,实际的数据更新仍然是由文档来完成的 在文档和用户之间起中介作用 视图可以直接或间接 地访问文档类中的成 员变量,它从文档类 中(而不是从存储介质 中)将文档中的数据取 出来,然后在屏幕上 显示文档的数据 它可以接收用户的输入 ,并接受用户的修改 16.1.2 文档/视图结构 文档/视图结构的工作机制 视图通过GetDocument成员函数获得指向相关联的文档对象的指针 通过该指针调用文档类的成员函数来从文档中读取数据 视图把数据显示于计算机屏幕上 用户通过与视图的交互来查看数据并对数据进行修改 视图通过相关联的文档类的成员函数将经过修改的数据传递给文档对象 文档对象获得修改过的数据之后,对其进行必要的修改,最后保存到永久介质(如磁盘文件)中 16.2 文档类 构造CDocument类的派生类的基本步骤 一般来说,从CDocument类派生自己的文档类所需的典型步骤为 为每一个文档类型从CDocument类(当然也可以是其它CDocument类的派生类)派生一个相应的文档类。 为文档类添加成员变量。这些成员变量用来保存文档的数据,其它对象(如与文档相关联的视图)直接或间接地访问这些成员变量来读取或更新文档的数据。 重载Serialize成员函数,实现文档数据的串行化。 16.3 CDocument类的派生类构造 16.4 视图类 1. CEditView 支持类似编辑控件所要实现的功能,常见的文本操作,基本上都是由该类支持实现的。值得注意的是,该类的直接基类不是CView类,而是类CCtrlView。 2.CRichEditView 主要提供Rich文本操作的支持(Rich文本是既可以为文本,也可以为图形的一种特殊格式文本。) 3.CTreeView 主要提供一些树型控件所实现的功能的支持。它使一种数据的显示方式可以更富于变化。 4. ListView 该类与类CTreeView一样,更多的好处在于提供了一种简捷地实现数据的不同显示的途径。 5.CScrollView 它主要提供视图的滚动显示。需要注意的是,该类的直接基类是CView类。 16.5 CView类的派生类介绍 1. CDocTemplate类 2. CDocTemplate类的基本函数说明 CDocTemplate类的基类为CCmdTarget。 16.6 文档模板类 3. 文档模板CDocTemplate类的功能 在VC中,文档类、与文档类相关联的视图类以及为视图类提供显示的框架窗口都是由文档模板创建的。每一种文档类型都有一种文档模板与之相对应,文档模板负责创建和管理该文档类型的所有文档。 CDocTemplate

文档评论(0)

qbjzmxj5904 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档