单文档与多文档.pptVIP

  1. 1、本文档共51页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
单文档与多文档

第11章 单文档与多文档 清华大学计算机与信息管理中心---黄维通 第 11章 单文档与多文档 本章主要介绍Visual C++中的文档/视图结构的工作机制 11.1 概述 11.1.1单文档界面与多文档界面 11.1.2 文档/视图结构 11.1.3 SDI程序中文档、视图对象的创建过程 11.1.4 SDI程序的消息传递过程 11.2 Doc/View框架的主要成员 Doc/View框架虽然可以调用成百上千个不同的类,但是核心类只有五个: CWinApp CDocument CView CDocTemplate CFrameWnd 11.2.1 CWinApp 类 11.2.2 CDocument类 11.2.3 CView类 视图类(CView)是从CWnd类下派生的 11.2.4 CDocTemplate类 文档模板类在应用程序中有着非常重要的作用,是它将原本独立的文档、视图和框架窗口对象联系在一起 11.2.5 CFrameWnd类 CFrameWnd类在Doc/View结构中起着举足轻重的作用。 框架窗口维护了很多幕后的工作,例如工具条、菜单、状态条的显示、更新,视图的位置和显示,其它可停靠空间的停靠和动态尺寸调整。许多默认为MFC应用程序应该具备的基本功能都是CframeWnd类在完成 11.3文档操作中的一些重要概念 文档的消息映射 11.3.1 串行化处理 串行化:将对象写入字节流和从字节流恢复对象的操作 串行化除了可以使用文件保存对象之外,还可以通过网络、串口传输对象,因此使用字节流。串行化代码如下: void CMDIDoc::Serialize(CArchive ar) { if (ar.IsStoring()) { // TODO: add storing code here } else { // TODO: add loading code here } } 使用串行化的好处是不需要重载文件打开、文件保存之类的方法,MFC框架会自动完成这些任务,并自动调用文档类的Serialize方法来完成串行化过程。 如果文档的抽象数据只有一个字符串,那么你只需要在Serialize中添加相应语句就可以完成串行化过程。 如果不使用MFC提供的串行化框架,那么就需要重载一些函数,来获取文件名,然后自己来读写文件完成对象的串行化。 11.3.2 消息映射 使用ClassWizard来添加消息映射,但有时,ClassWizard不支持某些类的消息映射,需自己添加一些自定义的消息,这时都需要手工添加消息映射代码 11.3.3 消息传递 由于用户可以在很多MFC类中映射同一个消息,如可以在文档和视图中同时映射打开文件的消息,这样就需要消息有明确的来源,也有明确的接收者,因此需要判断消息传递的顺序。 11.4 SDI编程实例 11.5 MDI编程实例 在第二个AFX_MSG_MAP之后,可以添加自己的消息映射,ClassWizard不检查这里,这里的消息映射不会出现在ClassWizard中的 当前视图?当前文档?与当前视图/文档关联的文档模板?子框架窗口(只有MDI有该步骤)?主框架窗口?应用程序对象 【例11-1】在主窗口中央显示一文本“您好, 单文档界面的例程!”。单击“改变显示文本”菜单项,可弹出一个对话框,通过此对话框可改变主窗口中的显示文本内容 (1) 创建工程文件和对话框资源 创建一个单 文档工程文件 MySdi,然后添 加对话框资源 (2) 为CMySdiDoc类添加成员变量 在CMySdiDoc类的定义中增加如下的代码: ? CString m_str; 用以存放字符串 (3) 文档变量初始化 打开CMySdiDoc.cpp文件,在 OnNewDocument成员函数加入以下代码: BOOL CMySdiDoc::OnNewDocument() { if (!CDocument::OnNewDocument()) return FALSE; m_str=“您好,单文档界面的例程!” //初始化成员变量 return TRUE; } (4) 视图的输出 MySdi程序视图类CMySdiView类的OnDraw成员函数:void CMySdiView::OnDraw(CDC* pDC) { CMySdiDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); … CRect rectClient; Ge

文档评论(0)

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

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

1亿VIP精品文档

相关文档