你对MFC真的了解嘛
mfc吧
全部回复
仅看楼主
level 6
经常在VC 中听别人讲MFC但一直不知道到底是什么意思,MFC简单来说就是VC的类库.
MFC是一个编程框架
MFC (Microsoft Foundation Class Library)中的各种类结合起来构成了一个应用程序框架,
它的目的就是让程序员在此基础上来建立Windows下的应用程序,
这是一种相对SDK来说更为简单的方法。因为总体上,MFC框架定义了应用程序的轮廓,
并提供了用户接口的标准实现方法,
程序员所要做的就是通过预定义的接口把具体应用程序特有的东西填入这个轮廓。
Microsoft Visual C++提供了相应的工具来完成这个工作:
AppWizard可以用来生成初步的框架文件(代码和资源等);
资源编辑器用于帮助直观地设计用户接口;ClassWizard用来协助添加代码到框架文件;
最后,编译,则通过类库实现了应用程序特定的逻辑。
2017年12月15日 08点12分 1
level 6
封装
构成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就是前者的窗口句柄。
2017年12月15日 08点12分 2
想要对MFC有更深入的了解可以加我 2696858384
2017年12月16日 06点12分
level 6
(2)对应用程序概念的封装
使用SDK编写Windows应用程序时,总要定义窗口过程,登记Windows Class,创建窗口,等等。
MFC把许多类似的处理封装起来,替程序员完成这些工作。
另外,MFC提出了以文档-视图为中心的编程模式,MFC类库封装了对它的支持。
文档是用户操作的数据对象,视图是数据操作的窗口,用户通过它处理、查看数据。
2017年12月15日 08点12分 3
level 6
(3)对COM/OLE特性的封装
OLE建立在COM模型之上,由于支持OLE的应用程序必须实现一系列的接口(Interface),
因而相当繁琐。MFC的OLE类封装了OLE API大量的复杂工作,
这些类提供了实现OLE的更高级接口。
2017年12月15日 09点12分 4
level 6
(4)对ODBC功能的封装
以少量的能提供与ODBC之间更高级接口的C++类,封装了ODBC API的大量的复杂的工作,
提供了一种数据库编程模式。
2017年12月15日 10点12分 5
level 6
继承
首先,MFC抽象出众多类的共同特性,设计出一些基类作为实现其他类的基础。
这些类中,最重要的类是CObject和CCmdTarget。CObject是MFC的根类,
绝大多数MFC类是其派生的,包括CCmdTarget。CObject 实现了一些重要的特性,
包括动态类信息、动态创建、对象序列化、对程序调试的支持,等等。
所有从CObject派生的类都将具备或者可以具备CObject所拥有的特性。
CCmdTarget通过封装一些属性和方法,提供了消息处理的架构。MFC中,
任何可以处理消息的类都从CCmdTarget派生。
2017年12月15日 12点12分 6
level 6
针对每种不同的对象,MFC都设计了一组类对这些对象进行封装,每一组类都有一个基类,
从基类派生出众多更具体的类。这些对象包括以下种类:窗口对象,基类是CWnd;
应用程序对象,基类是CwinThread;文档对象,基类是Cdocument,等等。
程序员将结合自己的实际,从适当的MFC类中派生出自己的类,
实现特定的功能,达到自己的编程目的。
2017年12月15日 13点12分 7
level 6
虚拟函数和动态约束
MFC以“C++”为基础,自然支持虚拟函数和动态约束。但是作为一个编程框架,
有一个问题必须解决:如果仅仅通过虚拟函数来支持动态约束,必然导致虚拟函数表过于臃肿
,消耗内存,效率低下。例如,CWnd封装 Windows窗口对象时,
每一条Windows消息对应一个成员函数,这些成员函数为派生类所继承。
如果这些函数都设计成虚拟函数,由于数量太多,实现起来不现实。于是,
MFC建立了消息映射机制,以一种富有效率、便于使用的手段解决消息处理函数的动态约束问题
2017年12月15日 13点12分 8
level 6
继承
首先,MFC抽象出众多类的共同特性,设计出一些基类作为实现其他类的基础。
这些类中,最重要的类是CObject和CCmdTarget。CObject是MFC的根类,
绝大多数MFC类是其派生的,包括CCmdTarget。CObject 实现了一些重要的特性,
包括动态类信息、动态创建、对象序列化、对程序调试的支持,等等。
所有从CObject派生的类都将具备或者可以具备CObject所拥有的特性。
CCmdTarget通过封装一些属性和方法,提供了消息处理的架构。MFC中,
任何可以处理消息的类都从CCmdTarget派生。
2017年12月16日 05点12分 9
level 6
针对每种不同的对象,MFC都设计了一组类对这些对象进行封装,每一组类都有一个基类,
从基类派生出众多更具体的类。这些对象包括以下种类:窗口对象,基类是CWnd;
应用程序对象,基类是CwinThread;文档对象,基类是Cdocument,等等。
程序员将结合自己的实际,从适当的MFC类中派生出自己的类,
实现特定的功能,达到自己的编程目的。
2017年12月16日 06点12分 10
level 6
虚拟函数和动态约束
MFC以“C++”为基础,自然支持虚拟函数和动态约束。但是作为一个编程框架,
有一个问题必须解决:如果仅仅通过虚拟函数来支持动态约束,必然导致虚拟函数表过于臃肿
,消耗内存,效率低下。例如,CWnd封装 Windows窗口对象时,
每一条Windows消息对应一个成员函数,这些成员函数为派生类所继承。
如果这些函数都设计成虚拟函数,由于数量太多,实现起来不现实。于是,
MFC建立了消息映射机制,以一种富有效率、便于使用的手段解决消息处理函数的动态约束问题
2017年12月16日 06点12分 11
level 1
要么您做跟随者、要么做引领者!!现诚邀各路大咖交流沟通,共创大业!
2018年3月13号, MBC(中国)香港亚博--全球启动大会。 从深圳出发,到香港澳门,五天四夜,吃住全部五星(深圳住一晚上),还有各路顶级明星 演唱会。 现场会奖励优秀领导人(有车子,手表,钻石等等)热烈欢迎各路英雄共商大计积极报名参加,机不可失 、失不再来!本项目正在内排启动中,诚邀各路团队领导人!公司背景实力雄厚、无国内政治风险、技术团队有10多年经验技术支持,稳定发展!您错过了SMI、MBI、请千万不要错过即将爆发的MBC中国!财富热线:
18562768207
,电联!
2017年12月25日 08点12分 15
1