第五章、MFC框架.ppt

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

第16章 SDI MDI VC++面向对象与可视化程序设计 一、三种典型的VC++应用程序 我们在使用AppWizard开始一个项目时,可以根据需要选择三种类型的应用界面: Single Document Multiple Documents Dialog Based 1、单文档界面与多文档界面 文档/视图 基础知识 MFC 2.0以后,应用程序的体系结构发生了变化,应用程序中引入了文档/视图结构。 文档(Document)其实就是数据,可以用data set或data source来表示它的意义。 视图就是数据的呈现方式。 在文档/视图应用程序中,应用程序的数据由文档对象代表,而数据的视图(呈现)由视图对象代表。文档和视图合作来完成处理用户的输入并绘制结果数据的文字或图形表示。 文档/视图 基础知识 MFC的文档类CDocument是文档对象的基类,CView是视图对象的基类。 MFC支持两种类型的文档/视图应用程序。即单文档界面(SDI)应用程序和多文档界面(MDI)应用程序。 框架窗口 框架窗口:框架窗口是应用程序的顶层窗口,通常是WS_OVERLAPPEDWINDOW样式的窗口,带有可缩放边框,标题栏、系统菜单以及最小化、最大化和关闭按钮。 框架窗口(对象)作用: 在屏幕上定义了应用程序的实际工作空间 担当视图的容器。 框架窗口 SDI应用程序只有一个框架窗口CFrameWnd,它被用作应用程序的顶层窗口并来包含视图。 MDI应用程序使用两种不同类型的框架窗口,其中CMDIFrameWnd用作顶层窗口,而CMDIChildWnd在顶层窗口中浮动用来包含应用程序文档的视图。 视图 窗口 视图是没有边框的子窗口,真正出现时,其外围有一个有边框的窗口,这个有边框的窗口就是“框架窗口(即SDI的CFrameWnd、MDI的CMDIChildWnd)”。框架窗口是视图的父窗口。 视图的大小与框架窗口相适应,在实际中作为框架窗口的客户区。 视图 窗口 应用程序的数据保存在文档对象中,数据 的可视表示保存在视图对象中。(如一个矩形) 视图对象的作用: 提供文档的可视化表示 将用户的输入(特别是鼠标和键盘消息)转换为操作文档数据的命令。 SDI文档/视图体系结构 文档模板 MFC把Document/view/Frame视为三位一体,每当使用者欲打开(或新建)一份文件,程序应该做出Document、View、Frame各一份,这个“三口组”成为一个运行单元,由Document Template掌管。MFC的有一个CDocTemplate负责此事。 MFC有两个派生类:CMultiDocTemplate和CSingleDocTemplate。 文档模板 文档模板与数据类型对应,如果你的程序能够处理两种数据类型,你必须制造两个文档模板出来,并使用AddDocTemplate函数将它们一一加入系统之中。 Document Template管理“三口组”,CWinApp管理Document Template。 通过InitInstance中的下列代码就可以看出这一点。 文档模板管理文档/视图/框架窗口 BOOL CDlgCtrlApp::InitInstance() { …… CSingleDocTemplate* pDocTemplate; pDocTemplate = new CSingleDocTemplate( IDR_MAINFRAME, RUNTIME_CLASS(CDlgCtrlDoc), RUNTIME_CLASS(CMainFrame), RUNTIME_CLASS(CDlgCtrlView)); AddDocTemplate(pDocTemplate); …… } 文档模板、文档、视图和框架窗口的关系 CDocTemplate、CDocument、CView、CFrameWnd之间的关系可以整理如下: 1.CWinApp拥有一个对象指针:CDocManager *m_pDocManager。(通过查看CWinApp类的声明可以找到此指针) 2. CDocManager拥有一个指针链表CPtrList m_templateList,用来维护一系列的Document Template。一个程序若支持两“种”文件类型,就应该有两份Document Template 。 文档模板、文档、视图和框架窗口的关系 3.应用程序应该在CMyWinApp::InitInstance中以AddDocTemplate将这些文档模板加入到由CDocManager中所维护的链表中。 文档模板、文档、视图和框架窗口的关系 4. CDocTemplat

文档评论(0)

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

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

版权声明书
用户编号:7065136142000003

1亿VIP精品文档

相关文档