1_MFC概述-深入浅出 MFC(李九进).pdfVIP

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1_MFC概述-深入浅出 MFC(李九进)

第1章 MFC 概述 1.1 MFC是一个编程框架 MFC (Microsoft Foundation Class Library) 中的各种类结合起来构成了一个应用程序框架,它 的目的就是让程序员在此基础上来建立Windows 下的应用程序,这是一种相对 SDK 来说更 为简单的方法。因为总体上,MFC 框架定义了应用程序的轮廓,并提供了用户接口的标准 实现方法,程序员所要做的就是通过预定义的接口把具体应用程序特有的东西填入这个轮 廓。Microsoft Visual C++提供了相应的工具来完成这个工作:AppWizard 可以用来生成初步 的框架文件(代码和资源等);资源编辑器用于帮助直观地设计用户接口;ClassWizard 用来 协助添加代码到框架文件;最后,编译,则通过类库实现了应用程序特定的逻辑。 1.1.1 封装 构成 MFC 框架的是 MFC 类库。MFC 类库是 C++类库。这些类或者封装了 Win32 应用程序 编程接口,或者封装了应用程序的概念,或者封装了 OLE 特性,或者封装了 ODBC 和 DAO 数据访问的功能,等等,分述如下。 (1)对Win32 应用程序编程接口的封装 用一个 C++ Object 来包装一个Windows Object 。例如:class CWnd 是一个C++ window object, 它把 Windows window(HWND)和 Windows window 有关的 API 函数封装在 C++ window object 的成员函数内,后者的成员变量m_hWnd 就是前者的窗口句柄。 (2 )对应用程序概念的封装 使用 SDK 编写 Windows 应用程序时,总要定义窗口过程,登记 Windows Class ,创建窗口, 等等。MFC 把许多类似的处理封装起来,替程序员完成这些工作。另外,MFC 提出了以文 档-视图为中心的编程模式,MFC 类库封装了对它的支持。文档是用户操作的数据对象,视 图是数据操作的窗口,用户通过它处理、查看数据。 (3 )对COM/OLE 特性的封装 OLE 建立在 COM 模型之上,由于支持 OLE 的应用程序必须实现一系列的接口(Interface ), 因而相当繁琐。MFC 的OLE 类封装了 OLE API 大量的复杂工作,这些类提供了实现 OLE 的更高级接口。 (4 )对ODBC 功能的封装 以少量的能提供与ODBC 之间更高级接口的 C++类,封装了 ODBC API 的大量的复杂的工 作,提供了一种数据库编程模式。 1.1.2 继承 首先,MFC 抽象出众多类的共同特性,设计出一些基类作为实现其他类的基础。这些类中, 最重要的类是 CObject 和 CCmdTarget 。CObject 是 MFC 的根类,绝大多数MFC 类是其派生 的,包括 CCmdTarget 。CObject 实现了一些重要的特性,包括动态类信息、动态创建、对 象序列化、对程序调试的支持,等等。所有从CObject 派生的类都将具备或者可以具备CObject 所拥有的特性。CCmdTarget 通过封装一些属性和方法,提供了消息处理的架构。MFC 中, 任何可以处理消息的类都从 CCmdTarget 派生。 针对每种不同的对象,MFC 都设计了一组类对这些对象进行封装,每一组类都有一个基类, 从基类派生出众多更具体的类。这些对象包括以下种类:窗口对象,基类是 CWnd ;应用程 序对象,基类是 CwinThread ;文档对象,基类是Cdocument,等等。 程序员将结合自己的实际,从适当的 MFC 类中派生出自己的类,实现特定的功能,达到自 己的编程目的。 1.1.3 虚拟函数和动态约束 MFC 以“C++ ”为基础,自然支持虚拟函数和动态约束。但是作为一个编程框架,有一个 问题必须解决:如果仅仅通过虚拟函数来支持动态约束,必然导致虚拟函数表过于臃肿,消 耗内存,效率低下。例如,CWnd 封装 Windows 窗口对象时,每一条 Windows 消息对应一 个成员函数,这些成员函数为派生类所继承。如果这些函数都设计成虚拟函数,由于数量太 多,实现起来不现实。于是,MFC 建立了消息映射机制,以一种富有效率、便于使用的手 段解决消息处理函数的动态约束问题。 这样,通过虚拟函数和消息映射,MFC 类提供了丰富的编程接口。程序员继承基类的同时, 把自己实现的虚拟函数和消息处理函数嵌入 MFC 的编程框架。MFC 编程框架将在适当的时 候、

文档评论(0)

zijingling + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档