第11章 和视图的分离.ppt

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

第11章 文档和视图的分离 本章是MFC程序设计的核心章节之一,MFC的核心就是在于“文档-视图”结构。虽然不必要求读者要设计出类似于MFC这样的“文档-视图”结构的应用程序框架,不过如果能理解MFC的“文档-视图”结构的理论,对以后Windows程序设计的深入学习,是很帮助的。本章的主要内容有: 文档和视图相互作用的函数:读者可以学到文档和视图相互作用的理论本质,并学会文档和视图相互作用的函数的使用和原理。 CView类的派生类:读者可以学到MFC视图家族的视图类结构理论,已经使用这些理论编写文档和视图高级交互的简单实例。 多视图:读者可以学到多视图的理论知识和学会多视图的程序设计。 11.1 文档和视图相互作用的函数 文档和视图相互作用是通过成员函数来进行消息传递或相互调用的,它们之间相互作用的函数主要有: CView::GetDocument():该函数是在当前视图中获取文档。 CDocument::UpdateAllViews():该函数是更新所有的视图,在“文档-视图”结构中,一个文档往往对应于一个或多个视图,因此文档的改变可以更新部分视图,也可以更新所有视图。 CViews::OnUpdate():视图的自我更新。 CView::OnInitialUpdate():初始化更新界面。 CDocument::OnNewDocument():在文档中再创建一个新文档。 11.1.1 获取当前文档:CView::GetDocument()函数 一个视图只能对应一个文档,在视图类成员函数中使用GetDocument()可以返回一个与当前视图相关联的文档,如果当前的用户输入了新的文档数据,使用该函数可以实时地返回必威体育精装版版本的文档,该函数的原型如下代码所示: CDocument* GetDocument( ) const; 从函数原型可以看出,该函数不允许在函数体内修改视图类的成员,而且返回一个指向CDocument的指针,利用该指针,开发者可以指向CDocument对象或是CDocument派生类的对象,从而可以访问文档类的成员函数或公有数据成员。 在一个单文档的MFC“test”项目中,可以查看到系统默认生成的GetDocument()函数代码如下: CTestDoc* CTestView::GetDocument() { ASSERT(m_pDocument-IsKindOf(RUNTIME_CLASS(CTestDoc))); return (CTestDoc*)m_pDocument; } 11.1.2 更新所有视图:CDocument::UpdateAllViews()函数 一个文档可以对应一个多若干个视图,有时可能会遇到要一次性更新所有视图的情况,在这种情况下,使用UpdateAllViews()就是最简单的,如果UpdateAllViews()在视图类的成员函数中被调用,则可以通过视图类的成员函数GetDocument()来间接调用: GetDocument()-UpdateAllViews(this) ; 11.1.3 视图自我更新:CViews::OnUpdate()函数 当程序调用了UpdateAllViews()函数时,所有的应用程序框架都会相应地调用CViews::OnUpdate()函数。不过,如果相单独更新一个视图,或在一个视图中实现自我更新,可以直接在视图类中调用OnUpdate()函数。 11.1.4 初始化更新界面:CView::OnInitialUpdate()函数 CView::OnInitialUpdate()的调用发生在诸如用户从“File”菜单中选择了“New”菜单项,或选择了“Open”菜单项。如果是使用派生的视图类,则一定要在派生的视图类的OnInitialUpdate()函数调用基类的OnInitialUpdate()函数。 11.1.5 创建新文档:CDocument::OnNewDocument()函数 在MFC应用程序中,不管是MDI还是SDI应用程序,只要用户使用“File”菜单中的“New”命令,则应用程序框架就会构造一个文档对象,进而调用OnNewDocument()函数,而在调用OnNewDocument()时可以设置文档数据成员的初始值。 注意:在“文档-视图”框架中,使用应用程序向导生成的应用程序并不需要做太多的工作,在默认生成的代码中,文档和视图的相互关系已经梳理好,开发者在这个关系前提下直接使用即可。 11.2 一个简单的文档视图应用程序的创建和分析 由于MFC程序是看不到main()函数的入口的,唯一的一个入口就是一个全局的应用程序对象: CTestApp theApp; 这个对象的创建,虽然是简单的一行,但它的创建是基于应用程序框架类、

文档评论(0)

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

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

1亿VIP精品文档

相关文档