- 1、本文档共338页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MFC概述
MFC是一个编程框架
MFC (Microsoft Foundation Class Library)中的各种类结合起来构成了一个应用程序框架,它的目的就是让程序员在此基础上来建立Windows下的应用程序,这是一种相对SDK来说更为简单的方法。因为总体上,MFC框架定义了应用程序的轮廓,并提供了用户接口的标准实现方法,程序员所要做的就是通过预定义的接口把具体应用程序特有的东西填入这个轮廓。Microsoft Visual C++提供了相应的工具来完成这个工作:AppWizard可以用来生成初步的框架文件(代码和资源等);资源编辑器用于帮助直观地设计用户接口;ClassWizard用来协助添加代码到框架文件;最后,编译,则通过类库实现了应用程序特定的逻辑。
封装
构成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的大量的复杂的工作,提供了一种数据库编程模式。
继承
首先,MFC抽象出众多类的共同特性,设计出一些基类作为实现其他类的基础。这些类中,最重要的类是CObject和CCmdTarget。CObject是MFC的根类,绝大多数MFC类是其派生的,包括CCmdTarget。CObject 实现了一些重要的特性,包括动态类信息、动态创建、对象序列化、对程序调试的支持,等等。所有从CObject派生的类都将具备或者可以具备CObject所拥有的特性。CCmdTarget通过封装一些属性和方法,提供了消息处理的架构。MFC中,任何可以处理消息的类都从CCmdTarget派生。
针对每种不同的对象,MFC都设计了一组类对这些对象进行封装,每一组类都有一个基类,从基类派生出众多更具体的类。这些对象包括以下种类:窗口对象,基类是CWnd;应用程序对象,基类是CwinThread;文档对象,基类是Cdocument,等等。
程序员将结合自己的实际,从适当的MFC类中派生出自己的类,实现特定的功能,达到自己的编程目的。
虚拟函数和动态约束
MFC以“C++”为基础,自然支持虚拟函数和动态约束。但是作为一个编程框架,有一个问题必须解决:如果仅仅通过虚拟函数来支持动态约束,必然导致虚拟函数表过于臃肿,消耗内存,效率低下。例如,CWnd封装 Windows窗口对象时,每一条Windows消息对应一个成员函数,这些成员函数为派生类所继承。如果这些函数都设计成虚拟函数,由于数量太多,实现起来不现实。于是,MFC建立了消息映射机制,以一种富有效率、便于使用的手段解决消息处理函数的动态约束问题。
这样,通过虚拟函数和消息映射,MFC类提供了丰富的编程接口。程序员继承基类的同时,把自己实现的虚拟函数和消息处理函数嵌入MFC的编程框架。MFC编程框架将在适当的时候、适当的地方来调用程序的代码。本书将充分的展示MFC调用虚拟函数和消息处理函数的内幕,让读者对MFC的编程接口有清晰的理解。
MFC的宏观框架体系
如前所述,MFC实现了对应用程序概念的封装,把类、类的继承、动态约束、类的关系和相互作用等封装起来。这样封装的结果对程序员来说,是一套开发模板(或者说模式)。针对不同的应用和目的,程序员采用不同的模板。例如,SDI应用程序的模板,MDI应用程序的模板,规则DLL应用程序的模板,扩展DLL应用程序的模板,OLE/ACTIVEX应用程序的模板,等等。
这些模
您可能关注的文档
- VARCO顶驱TDS-11SA.doc
- VBNET对数据库的访问.doc
- VB-NET复习提纲(2010a_.doc
- VBNET课程教学大纲.doc
- VBS 批量读取文件夹内所有的文本到Excel的脚本.doc
- VBscript常用函数.doc
- VBSCRIPT代码运行错误大全.doc
- VBScript语法错误代码.doc
- VBS常用运算符和函数.doc
- VBS的RUN函数本身带三个参数.doc
- 2025年成就江来”浙江省衢州市衢江区综合事业单位招聘优秀应届生(二)笔试备考题库参考答案详解.docx
- 2025年广东深圳市龙岗中心医院招聘366人笔试高频难、易错点备考题库及参考答案详解.docx
- 2025年成都市龙泉驿区所属事业单位选调35人笔试备考题库带答案详解.docx
- 2025年拉萨市城关区融媒体中心招聘笔试备考题库参考答案详解.docx
- 2025年敦煌研究院考核招聘9名急需紧缺专业硕士研究生笔试备考题库及完整答案详解1套.docx
- 2025年广东省科学院生态环境与土壤研究所网络管理员招聘笔试高频难、易错点备考题库及答案详解一套.docx
- 2025年广西梧州市公安局招聘辅警274人笔试高频难、易错点备考题库及参考答案详解.docx
- 2025年江苏宿迁学院招聘高层次人才98人笔试高频难、易错点备考题库参考答案详解.docx
- 2025年广东省特种设备检测研究院第一批招聘笔试高频难、易错点备考题库及参考答案详解1套.docx
- 2025年广西科学院北部湾海洋产业研究院招聘笔试备考题库参考答案详解.docx
最近下载
- 专题01 定语从句100题(考点串讲)(word版有答案).docx VIP
- 凿井井架设计汇编.doc VIP
- 北京某电力隧道工程投标施工组织设计.doc VIP
- 《【阅读专题2】故物与深情:感受血缘中的亲情》教学课件.pptx VIP
- 人教版九年级英语 课文标注笔记 全册.pdf VIP
- 北京某电力隧道工程(投标)施工组织设计.pdf VIP
- 高压旋喷桩技术交底1 - 桩基础.docx VIP
- 17J008 挡土墙(重力式、衡重式、悬臂式)(最新).pdf VIP
- 《【阅读专题1】忠与孝:体会宗法社会的伦理选择之难》教学课件 (1).pptx VIP
- 力普LP100说明书PDF_Image_Marked.pdf VIP
文档评论(0)