- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
清华大学c与vc课件vc316a
第5章 文本与字体 Huang Weitong 面向对象与可视化程序设计 --Visual C++ 编程主讲教师:唐 龙教授 (计算机科学与技术系)黄维通博士 (计算机与信息管理中心)清 华 大 学2001年2月 第十六章文档类与视图类及其应用 内容提要 概述 文档类 视图类 文档模板类 编写单文档应用程序 编写多文档应用程序 §16.1.概述 1. 单文档界面与多文档界面 VC的MFC库支持三种不同的应用程序 单文档界面(SDI) 的应用程序——只有一个窗口。 多文档界面(MDI) 的应用程序——有多个子窗口,同时对多个文档进行操作。 基于对话框的应用程序 使用AppWizard创建SDI和MDI的应用程序的过程几乎完全一样。主要差别: SDI应用程序的CMainFrame类的基类为CFrameWnd,不生成CChildFrame类。 MDI应用程序的CMainFrame类的基类为CMDIFrameWnd,生成CChildFrame类。 2.视图 视图是文档的不同表现形式,每一个文档可有多个视图,但每个视图只能对应于一个确定的文档。 多文档程序需要多个视图,应解决多个文档的数据管理方法的问题。 最初的文档模板只支持主窗口; 每次打开一个新文档时都调用CDocument的函数OnNewDocument,建立一个由CMDIChildWnd派生的新的MDI子窗口; 这些窗口中保存着各种已打开的文档,所有的细节都由MFC库处理。 3.文档-视图结构 文档-视图结构是基于文档的应用程序的基本框架。比传统编程方法更有利于应用程序。 数据保存在文档类的成员变量中,文档负责对数据进行管理和维护: 通过串行化过程,将数据保存到盘文件或数据库; 处理菜单、工具栏按钮和加速键的WM_COMMAND消息,但不能处理其它的Windows消息。 3.文档-视图结构(续) 视图在文档和用户之间起中介作用 接收用户的输入,并接受用户的修改; 直接或间接的访问文档类中的成员变量,从文档类中(不是从存储介质中)取数据,并显示之。 4.文档-视图结构的工作机制 视图通过GetDocument()获得文档的指针; 通过指针调用文档类的成员函数读取文档数据; 视图把数据显示于计算机屏幕上; 用户与视图的交互,查看/修改数据; 视图通过相关联的文档类的成员函数,将修改后的数据传递给文档对象; 文档对象获得修改过的数据之后,进行必要的修改,最后,存到磁盘文件(永久介质中) 。 §16.2.文档及其派生类 1. 文档类 所有文档类都以CDocument类为基类。 CDocument类是CCmdTarget类派生的。 在Afxwin.h中定义CDocument类。 2.CDocument类的方法 CDocument类提供了文档类所需最基本功能,有两类方法: 一般方法; 虚拟方法 3. CDocument类的派生类构造 构造CDocument类的派生类的基本步骤: 为每一个文档类型从CDocument类(或其派生类)派生一个相应的文档类; 为文档类添加成员变量。这些成员变量用来保存文档的数据; 重载Serialize成员函数,实现文档数据的串行化。 文档的数据保存到成员变量,便于其他对象的访问。 串行化由函数Serialize()实现,它有一个参数是与所打开的文件相关对象Carchive,进行文档的读或写单一操作的对象。 §16.3.视图及其派生类 1. 视图类 视图类CView是CWnd类直接派生的。 CView及其派生类都具有CWnd的所有功能,可接受任何Windows消息。 在Afxwin.h中定义CView类。 3. CView类的派生类 CEditView——支持类似编辑控件所要实现的功能,常见的文本操作,多由该类实现。其直接基类不是CView类,而是类CCtrlView。 CRichEditView——支持Rich文本操作。 CTreeView——支持树型控件所实现的功能,使数据的显示方式更富于变化。 ListView——类似于CTreeView,提供了一种简捷地实现数据的不同显示的途径。 CScrollView——提供视图的滚动显示。是CView直接派生类。 §16.4.文档模板类 1.CDocTemplate类 CDocTemplate类的基类为CCmdTarget。 在Afxwin.h中定义CDocTemplate类。 2. CDocTemplate类的基本函数 3. CDocTemplate类的函数使用 文档类、视图类及框架窗口都由文档模板创建。 每一种文档类型都有与之相对应的一种文档模板,负责创建和管理该文档类型的所有文档。 创建过程顺序:创建文档 → 创建框架窗口 → 创建视图。 文档、
文档评论(0)