清华大学c++和vc++课件vc_3_16a

清华大学c++和vc++课件vc_3_16a

ID:5485861

大小:813.50 KB

页数:51页

时间:2017-12-13

清华大学c++和vc++课件vc_3_16a_第1页
清华大学c++和vc++课件vc_3_16a_第2页
清华大学c++和vc++课件vc_3_16a_第3页
清华大学c++和vc++课件vc_3_16a_第4页
清华大学c++和vc++课件vc_3_16a_第5页
资源描述:

《清华大学c++和vc++课件vc_3_16a》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、面向对象与可视化程序设计--VisualC++编程主讲教师:唐龙教授(计算机科学与技术系)黄维通博士(计算机与信息管理中心)清华大学2001年2月6/12/20211第十六章文档类与视图类 及其应用6/12/20212内容提要概述文档类视图类文档模板类编写单文档应用程序编写多文档应用程序6/12/20213§16.1.概述6/12/202141.单文档界面与多文档界面VC的MFC库支持三种不同的应用程序单文档界面(SDI)的应用程序——只有一个窗口。多文档界面(MDI)的应用程序——有多个子窗口,同时

2、对多个文档进行操作。基于对话框的应用程序使用AppWizard创建SDI和MDI的应用程序的过程几乎完全一样。主要差别:SDI应用程序的CMainFrame类的基类为CFrameWnd,不生成CChildFrame类。MDI应用程序的CMainFrame类的基类为CMDIFrameWnd,生成CChildFrame类。6/12/202152.视图视图是文档的不同表现形式,每一个文档可有多个视图,但每个视图只能对应于一个确定的文档。多文档程序需要多个视图,应解决多个文档的数据管理方法的问题。最初的文档模

3、板只支持主窗口;每次打开一个新文档时都调用CDocument的函数OnNewDocument,建立一个由CMDIChildWnd派生的新的MDI子窗口;这些窗口中保存着各种已打开的文档,所有的细节都由MFC库处理。6/12/202163.文档-视图结构文档-视图结构是基于文档的应用程序的基本框架。比传统编程方法更有利于应用程序。数据保存在文档类的成员变量中,文档负责对数据进行管理和维护:通过串行化过程,将数据保存到盘文件或数据库;处理菜单、工具栏按钮和加速键的WM_COMMAND消息,但不能处理其它的

4、Windows消息。注意:命令消息不同于一般Windows消息和控件通知消息,可被更多种对象处理,除了窗口和视图外,还有文档、文档模板或应用程序本身。6/12/202173.文档-视图结构(续)视图在文档和用户之间起中介作用接收用户的输入,并接受用户的修改;直接或间接的访问文档类中的成员变量,从文档类中(不是从存储介质中)取数据,并显示之。注意:通过调用文档和视图的接口将修改的信息反馈给文档类,实际的数据更新仍然是由文档来完成的。6/12/202184.文档-视图结构的工作机制视图通过GetDocum

5、ent()获得文档的指针;通过指针调用文档类的成员函数读取文档数据;视图把数据显示于计算机屏幕上;用户与视图的交互,查看/修改数据;视图通过相关联的文档类的成员函数,将修改后的数据传递给文档对象;文档对象获得修改过的数据之后,进行必要的修改,最后,存到磁盘文件(永久介质中)。6/12/20219§16.2.文档及其派生类6/12/2021101.文档类所有文档类都以CDocument类为基类。CDocument类是CCmdTarget类派生的。在Afxwin.h中定义CDocument类。6/12/2

6、021112.CDocument类的方法CDocument类提供了文档类所需最基本功能,有两类方法:一般方法;虚拟方法6/12/2021126/12/2021133.CDocument类的派生类构造构造CDocument类的派生类的基本步骤:为每一个文档类型从CDocument类(或其派生类)派生一个相应的文档类;为文档类添加成员变量。这些成员变量用来保存文档的数据;重载Serialize成员函数,实现文档数据的串行化。文档的数据保存到成员变量,便于其他对象的访问。串行化由函数Serialize()实

7、现,它有一个参数是与所打开的文件相关对象Carchive,进行文档的读或写单一操作的对象。6/12/202114§16.3.视图及其派生类6/12/2021151.视图类视图类CView是CWnd类直接派生的。CView及其派生类都具有CWnd的所有功能,可接受任何Windows消息。在Afxwin.h中定义CView类。6/12/2021162.CView类的方法6/12/2021173.CView类的派生类CEditView——支持类似编辑控件所要实现的功能,常见的文本操作,多由该类实现。其直接基

8、类不是CView类,而是类CCtrlView。CRichEditView——支持Rich文本操作。CTreeView——支持树型控件所实现的功能,使数据的显示方式更富于变化。ListView——类似于CTreeView,提供了一种简捷地实现数据的不同显示的途径。CScrollView——提供视图的滚动显示。是CView直接派生类。注意:合理选择CView或Cview派生类可省去许多编程工作量。6/12/202118§16.4.文档模板类6/12/2021

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。