MFC
维基百科,自由的百科全书
Microsoft Foundation Classes, 简称MFC,是一个微软公司提供的类別库(class libraries),以C++类的形式封装了Windows的API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含的类包含大量句柄封装类和很多Windows的内建控件和组件。
目录 |
[编辑] 发展
MFC是在1992年随微软的Microsoft C/C++ 7.0编译器发布的,用于面向16位元Windows的软件开发。Borland几乎同时发布了面向Turbo C编译器的OWL,并且在一开始比MFC更具有市场占有率,但是在Borland发布了一个不向下兼容的应用程序框架之后,它丧失了很多市场份额;在Borland从微软获得发布MFC的授权之后它的市场份额进一步减少。
随着Visual Basic和Visual Studio .NET的发布,曾经一度被微软重点推荐的MFC被Visual Basic、C#、Windows Forms抢走了不少市场份额,但是MFC继续在非托管软件开发中占据重要地位。在托管开发方面,MFC中也包括对Windows Forms和托管/非托管互操作的封装。微软计划在Windows Vista(代号Longhorn)发布之后继续在MFC中增加对Windows Vista API,以及Windows Presentation Framework (代号Avalon)的支持。在可见的未来,微软对MFC的支持不会停止。
[编辑] MFC的优点
MFC的主要优点是可以用面向对象的方法来调用Windows API,以及应用程序开发的便捷。MFC将很多应用程序开发中常用的功能自动化,并且提供了文档框架视图结构和活动文档这样的便于自定义的应用程序框架。同时,在Visual C++内部也内建了很多对MFC的例如类向导这样的支持以减少软件开发的时间,使用类向导可以生成从hello world这样的简单程序到活动文档服务器这样的复杂程序。MFC的消息映射机制也避免了使用性能较低的庞大虚函数表。
[编辑] MFC的缺点
虽然MFC的源代码对用户是完全开放的,但是MFC的一些封装过程过于复杂,以致于新用户很难迅速掌握MFC的应用程序框架,以及在调试中定位问题的位置。同时,很多MFC对象不是线程安全的,致使在跨线程访问MFC对象时需要编写额外的代码。另外,MFC的很多类依赖于应用程序向导生成的代码,使得在使用Visual C++中其他类型的应用程序向导生成的工程中添加MFC支持的难度大大增加。
[编辑] 第三方支持
很多商用类库在MFC的基础上进一步实现了皮肤、渐变风格、多顶层窗口程序、属性列表等较受欢迎的功能;同时,在C++在线社区中,很大一部分开放的源代码也是基于MFC的。
[编辑] 版本
產品版本 | MFC 版本 |
---|---|
Microsoft C/C++ 7.0 | MFC 1.0 |
Visual C++ 1.0 | MFC 2.0 |
Visual C++ 1.5 | MFC 2.5 |
Visual C++ 2.0 | MFC 3.0 |
Visual C++ 2.1 | MFC 3.1 |
Visual C++ 2.2 | MFC 3.2 |
Visual C++ 4.0 | MFC 4.0 (mfc40.dll 包含於 Windows 95) |
Visual C++ 4.1 | MFC 4.1 |
Visual C++ 4.2 | MFC 4.2 (mfc42.dll 包含於 Windows 98 第一版) |
Pocket PC Embedded 3.0 | MFC 4.2 (mfc42.dll) |
Visual C++ 5.0 | MFC 4.21 (mfc42.dll) |
Visual C++ 6.0 | MFC 6.0 (mfc42.dll) |
Visual C++ .NET 2002 | MFC 7.0 (mfc70.dll) |
Visual C++ .NET 2003 | MFC 7.1 (mfc71.dll) |
Visual C++ 2005 | MFC 8.0 (mfc80.dll) |