《面向对象的程序设计语言-C+》课件-第7章.ppt
《《面向对象的程序设计语言-C+》课件-第7章.ppt》由会员分享,可在线阅读,更多相关《《面向对象的程序设计语言-C+》课件-第7章.ppt(19页珍藏版)》请在三一办公上搜索。
1、1,第七章 文档和视图,本章导读 理解文档类和视图类二者间的关系。掌握在视图类中利用GetDocument函数获得文档类的指针,并借助此指针更新文档类中的数据的方法。掌握在文档类中当文档数据发生了改变时利用UpDateAllViews()通知所有的视图对象的方法,通过调用文档类的UpDateAllViews()函数去调用每个视图的成员函数OnUpdate()函数对相应的视图进行数据更新。掌握视图类的OnDraw函数的调用机理。了解SDI文档序列化的工作原理和实现方法。,2,7.1 文档类和视图类间的关系,视图和用户的文档间是紧密相连的,文档类用于管理应用程序的数据,包括对数据读取、存储和修改。
2、视图类用于显示文档并管理与用户的交互。这种文档和视图的结合,称为“文档/视图”结构机制。定义和操纵数据的代码在文档类中实现;显示数据、解释用户输入的代码在视图类中实现。一个SDI(单文档界面)应用程序同一时刻只能打开一个文档。在一个MDI(多文档界面)应用程序中,可以有几种不同类型的文档,每个文档可以有一个或多个视图。同一时刻可以打开几个文档,打开的文档经常使用适合该文档的工具栏和菜单。,3,7.2 常用的成员函数,在SDI(单文档界面)应用程序中,文档类的基类是CDocument,它可以有一个或多个视图类,而所有这些视图类的基类都是CView,任何一个应用程序的文档类和视图类都是由这两个类派
3、生出来的。7.2.1 CView类的GetDocument()函数 一个视图对象只有一个与之相联系的文档对象,它所包含的GetDocument()函数可以实现在视图中得到与之相联系的文档。CView类及其派生类只需调用GetDocument()函数就可以取得CDocument类的对象指针,从而用此指针来访问文档类中的的所有可见的数据。,4,GetDocument函数的原型为:CDocument*CView:GetDocument()const;另外,CDocument类中的GetNextView()函数可以在文档类中获得视图类的指针CDocument类先调用GetFirstViewPositi
4、on()函数得到所有有关该文档类对象的第一个视图,再用该函数的返回结果调用GetNextView()函数,即可得到CView类的指针,从而借此访问CView类的数据。,7.2 常用的成员函数,5,这两个函数的原型为:virtual POSITION CDocument:GetFirstViewPosition()const;virtual CView*CDocument:GetNextView(POSITION,7.2 常用的成员函数,6,7.2.2 CDocument 类的UpDateAllViews()函数通过文档类的UpDateAllViews()函数调用每个视图的成员函数OnUpdat
5、e()函数对相应的视图进行数据更新。UpDateAllViews()函数的原型为:void UpDateAllViews(CView*pSender,LPARAM lHint=0L,CObject*pHint=NULL);,7.2 常用的成员函数,7,7.2.3 CView类的 OnUpdate()函数当应用程序调用了CDocument 类的UpDateAllViews()函数时,应用程序框架就会相应地调用该函数。通常在派生视图类中的OnUpdate()函数要对文档进行访问,读取文档的数据,然后再对视图的数据成员或控制进行更新。OnUpdate()函数原型如下:virtual void OnU
6、pdate(CView*pSender,LPARAM lHint,CObject*pHint);函数中参数的说明同函数UpdateAllViews()。利用OnUpdate()函数,可以使视图的某一部分无效,以便触发视图类的OnDraw()函数。在默认情况即lHint=0,pHint=NULL时,函数OnUpdate()使视图的整个客户区无效;如果想要视图的某一部分无效,则需要定义相关的提示(hint)参数给出准确的无效区域。用OnUpdate()函数来更新视图的滚动范围。,7.2 常用的成员函数,8,7.2.4 Cview 类的OnlnitialUpdate()函数当应用程序启动或当用户从【
7、File】菜单中选择【New】或【Open】命令时,CView 类中的虚函数OnInitialUpdate()都会被自动调用。该函数的作用就是调用无提示参数(lHint=0,pHint=NULL)的OnUpdate()函数。,7.2 常用的成员函数,9,7.2.5 MFC应用程序中各个类对象间的相互调用关系(1).在框架窗口类中获得当前的文档类和视图类对象的指针在一个MDI应用程序中,在框架窗口类(主框架窗口类或子框架窗口类)中,可以利用基类CFrameWnd的GetActiveDocument函数,得到指向当前活动的文档类对象的指针,也可用基类CFrameWnd的GetActiveView函
8、数,得到视图类对象的指针。这两个函数的原型如下:virtual CDocument*GetActiveDocument();CView*GetActiveView()const;,7.2 常用的成员函数,10,(2).获得应用程序类对象的指针在MFC应用运行过程中,自始至终存在一个应用程序类对象,通过全局的Windows API函数AfxGetApp得到应用程序类对象的指针,该函数的原型为:CWinApp*AfxGetApp();(3).从应用程序类对象中获得主框架类对象的指针在MDI应用程序中,通过MFC的应用程序类对象,可以获得指向当前系统的主框架窗口类对象的指针,在应用程序类CWinAp
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向对象的程序设计语言-C+ 面向 对象 程序设计语言 课件
链接地址:https://www.31ppt.com/p-5033559.html