- 1、本文档共72页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第11章 文档/视图结构 11.1 概述 11.2 文档类 11.3 视 图类 11.4 文档/视图结构应用实例 习 题 11.1 概述 11.1.1 文档/视图结构 在文档/视图结构中,文档是一种数据源。数据源有很多种,最常见的是磁盘文件,但它不必一定是磁盘文件,也可以是来自串行口、网络或摄像机的输入信号等。 视图类在文档和用户之间起中介作用。视图可以直接或间接地访问文档类中的这些成员变量,它从文档类中(而不是从存储介质中)将文档的部分或全部的数据取出来,然后在屏幕上显示出来。 11.1.2 文档和视图的相互作用 在MFC应用程序框架中,文档/视图结构的关系主要体现在文档类和视图类对象的相互作用和相互访问上。文档类和视图类对象的相互访问关系如图11-1所示。 11.1.3 SDI和MDI MFC提供了两种类型的文档/视图结构程序:SDI(单文档界面)应用程序和MDI(多文档界面)应用程序。 MDI应用程序和SDI程序都提供一个File菜单,用于新建、打开、保存文档。MDI与SDI应用程序有两点不同: (1) MDI一般还提供一个Close菜单项,用于关闭当前打开的文档。 (2) MDI应用程序有一个窗口菜单,用于管理所有打开的子窗口,包括对于窗口的新建、关闭、层叠、平铺等。关闭一个窗口时,窗口内的文档将被自动关闭。 11.1.4 文档/视图结构的特点 1.使程序进一步模块化 2.有利于代码重用 3.不采用文档/视图结构的场合 不推荐采用文档/视图结构的情况主要有以下两种: (1) 不是面向数据或数据量很小的应用程序,最好不采用文档/视图结构。例如一些重要功能的工具程序,包括磁盘扫描程序、时钟程序和一些过程控制程序等。 (2) 不需重用 MFC提供的标准用户界面功能的程序,如一些游戏程序等,最好不采用文档/视图结构。 11.2 文档类 11.2.1 文档类的结构及其方法 1.文档类的结构 文档类定义的源代码如下: // class CDocument is the main document data abstraction #ifdef _AFXDLL class CDocument : public CCmdTarget #else class AFX_NOVTABLE CDocument : public CCmdTarget #endif { DECLARE_DYNAMIC(CDocument) public: // Constructors CDocument(); // Attributes public: const CString GetTitle() const; virtual void SetTitle(LPCTSTR lpszTitle); const CString GetPathName() const; virtual void SetPathName(LPCTSTR lpszPathName, BOOL bAddToMRU = TRUE); CDocTemplate* GetDocTemplate() const; virtual BOOL IsModified(); virtual void SetModifiedFlag(BOOL bModified = TRUE); // Operations void AddView(CView* pView); void RemoveView(CView* pView); virtual POSITION GetFirstViewPosition() const; virtual CView* GetNextView(POSITION rPosition) const; // Update Views (simple update - DAG only) void UpdateAllViews(CView* pSender, LPARAM lHint = 0L, CObject* pHint = NULL); // Overridables // Special notifications virtual void OnChangedViewList(); // after Add or Remove view virtual void DeleteContents(); // delete doc items etc // File helpers virtual BOOL OnNewDocument(); vir
文档评论(0)