第11章 单文档与多文档精要.ppt

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第11章 单文档与多文档精要

7.8 单文档与多文档 1 概述 VC的MFC库支持三种不同的应用程序 单文档界面(SDI) 多文档界面(MDI) 基于对话框的应用程序 SDI的应用程序 只有一个窗口 MDI的应用程序每次 可以读写多个文件或 文档,可同时对多个 文档进行操作,可以 有多个子窗口 主要差别 在创建SDI界面的应用程序时,不生成CChildFrame类,CMainFrame类的基类为CFrameWnd 在创建MDI界面的应用程序时,CMainFrame类的基类为CMDIFrameWnd 使用AppWizard创建SDI和MDI界面的应用程序的过程几乎完全一样 2 文档/视图结构 利用MFC应用程序向导生成的单文档和多文档程序框架时,由它所创建的各个类在一起工作,构成一个相互关联的结构,称为文档/视图结构; 在这个框架中,数据的维护及其显示,分别由两个不同但又彼此紧密相关的类——文档类(CDocument类)和视图类(CView类)负责。 在文档/视图结构中 对数据进行管理和维护,数据保存在文档类的成员变量中 文档类通过串行化 的过程将数据保存 到磁盘文件或数据库中 文档类还可处理来自如 菜单、工具栏按钮和加 速键的WM_COMMAND消息 除WM_COMMAND外,文档不 能处理其它的Windows消息 由此我们可以看出,命令消息可以被多种对象处理,这些对象除了窗口和视图外,还可以是文档、文档模板或应用程序本身 这一点与Windows消息 和控件通知消息不同, 因为Windows消息和控 件通知消息就只能被 窗口和视图处理。 通过调用文档和视图的接口将修改的信息反馈给文档类,实际的数据更新仍然是由文档来完成的 在文档和用户之间起中介作用 视图可以直接或间接 地访问文档类中的成 员变量,它从文档类 中(而不是从存储介质 中)将文档中的数据取 出来,然后在屏幕上 显示文档的数据 它可以接收用户的输入 ,并接受用户的修改 文档/视图结构的工作机制 视图通过GetDocument成员函数获得指向相关联的文档对象的指针 通过该指针调用文档类的成员函数来从文档中读取数据 视图把数据显示于计算机屏幕上 用户通过与视图的交互来查看数据并对数据进行修改 视图通过相关联的文档类的成员函数将经过修改的数据传递给文档对象 文档对象获得修改过的数据之后,对其进行必要的修改,最后保存到永久介质(如磁盘文件)中 3 Doc/View框架的主要成员 3.1 CWinApp类 CWinApp类代表主程序,负责维护进程的启动、终止等; 一个应用程序有且只有一个CWinApp类的对象; 一个应用程序对象就代表一个应用程序,当用户启动应用程序,Windows 调用应用程序框架内置的 WinMain 函数, 并且 WinMain 寻找一个由 CWinApp 派生的全局构造的应用程序对象,全局对象在应用程序之前构造。 // CSDIApp 构造 CSDIApp::CSDIApp() { m_bHiColorIcons = TRUE; // TODO: 在此处添加构造代码, // 将所有重要的初始化放置在InitInstance 中 } // 唯一的一个CSDIApp 对象 CSDIApp theApp; BOOL CSDIApp::InitInstance() { …… // 标准初始化 // 注册应用程序的文档模板。文档模板 // 将用作文档、框架窗口和视图之间的连接 CSingleDocTemplate* pDocTemplate; pDocTemplate = new CSingleDocTemplate( IDR_MAINFRAME, RUNTIME_CLASS(CSDIDoc), RUNTIME_CLASS(CMainFrame), // 主SDI 框架窗口 RUNTIME_CLASS(CSDIView)); if (!pDocTemplate) return FALSE; AddDocTemplate(pDocTemplate); …… // 唯一的一个窗口已初始化,因此显示它并对其进行更新 m_pMainWnd-ShowWindow(SW_SHOW); m_pMainWnd-UpdateWindow(); return TRUE; 3.2 CDocument类 负责应用程序数据的保存和装载,实现文档的序列化功能。 两个重要的成员函数: OnNewDocument() //新建文档 Serialize() //虚函数,负责文档数据的磁盘读写操作 BOOL CSDIDoc::OnNewDocument() { if (!CDocumen

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档