AP计算机科学A(APcomputer science A)复习备考攻略视频教程
42629 人在学
MFC实际上是微软所提供的微软基础类(Microsoft Foundation Classes),这个类作用在C++环境下编写应用程序的一个框架和引擎。而MFC就是在VC++上的辅助软件开发包(VC++是WinOS下开发人员使用的专业C++ SDK)。要注意的是MFC同VC++集成的VCL一样是一个非外挂式的软件包,类库,只不过MFC类是微软为VC++专配的。本文会对MFC进行简单的了解以及MFC的优缺点。
题外话
注意C++和VC++的区别:C++是一种面向对象程序设计语言,也是一种大家都承认的软件编制的通用规范,而VC++只是一个编译器,换句话说就是一种编译器+源程序编辑器的IDE,WS,PlatForm。这和Pascal和Dephi的关系是一个道理。Pascal是Dephi的语言基础,Dephi使用Pascal规范来进行Win下应用程序的开发和编译,却不同于BasiC语言和VB的关系。Basic语言在VB开发出来被应用的年代已经成了Basic语言的新规范。VB新加的Basic语言要素,如面向对象程序设计的要素,是一种性质上的飞跃。使VB既是一个IDE,又成长成一个新的程序设计语言。
MFC中的各种类结合起来构成了一个应用程序框架,目的是让程序员在这基础上建立Windows下的应用程序,因为MFC在总体上已经定义了应用程序的轮廓,并且还提供了用户接口的实现方法,最后程序员要做的知识通过预定义的接口把这个应用程序应有的东西填入。
MFC是Win API与C++的结合
API,就是微软提供的WinOS下应用程序的编程语言接口,也是软件编程的一种规范。但这样并不是说每一种编程语言本身就可以允许用户使用第三方语言在WinOS下进行应用程序开发。而像VB、VC++、java等编程语言的本质就是源于API的,那么开发出来的应用程序都能在工作在WinOS下。但是如果微软不提供这个API,那么可能就不会存在微软的编程开发以及微软的产品了。
MFC是微软对API函数的专用C++封装
这样子一方面让用户使用微软专业的C++ SDK来进行Win下应用程序的开发变得容易。而另一方面是以方便为目的的,因为MFC是API的封装,所以微软隐藏了很多内节(这种内节都是程序人员在Win下用C++编程软件是留下的),例如:应用程序实现消息处理、设备环境绘图等。而这种方便必定要微软付出了一定的代价,代价就是MFC对类的封装有一定的冗余和迂回。
MFC是微软封装的API是什么意思
虽然说Windows作为一个提供了功能强大的应用程序接口编程的操作系统,的确是方便了许多程序员。但是对于传统的Windows32的开发却难到了许多程序员,因为Win32的API函数实在太多并且名称没有规范,从零构架一个窗口动辄就是上百行的代码。而MFC是面向对象程序设计与Application framework的完美结合。它将传统的API进行了分类封装,并且为你创建了程序的一般框架,为你创建程序带来了方便。
MFC的优点
它可以用物件导向的方法调用Windows API,并且为程序开发提供了便捷。
它生成的程序小,执行代码效率高。
MFC自动化了很多应用程序开发常用的功能。
提供了便于自定义的应用程序框架,例如:文档框架视图结构和活动文档。
在VC++内部内建了很多对MFC的支持,这样减少了软件开发的时间,例如使用使用类向导可以生成从hello world这样的简单程序到活动文档伺服器这样的复杂程序。
MFC的消息映射机制也避免了使用性能较低的庞大虚函数表。
MFC缺点
因为MFC的一些封装过程过于麻烦,导致新手很难快速的掌握MFC的应用程序框架,以及快速的定位调试中的问题位置。
在跨执行绪访问MFC对象的时候需要额外编写代码,因为MFC对象不是执行绪安全的。
MFC中很多的类依赖应用程序向导来生成代码,导致很难把MFC添加在使用VC++中其他类型的应用程序向导生成的工程中。
第三方支持
很多的商用库类都在MFC的基础上实现了皮肤、渐变风格以及属性列表等。同时,在C++线上社区中很大一部分开放的源码都是基于MFC的。
Win32
Windows 应用程序中,MFC 的主包含文件为"Afxwin.h"。此外MFC的部分类为MFC/ATL 通用,可以在Win32 应用程序中单独包含并使用这些类。由于它的易用性,初学者常误认为VC++开发必须使用MFC。这种想法是错误的。作为Application Framework,MFC的使用只能提高某些情况下的开发效率,只起到辅助作用,而不能替代整个Win32 程序设计。
Win32 API只是一个接口,只有被用到别的东西才会显示出价值,比如用在了MFC、DLL、串口、SOCKET,COM+。而MFC是基本库类,属于C++,而Win API基本上都是结构类型的应用,里面没有类,这样就导致了MFC可以调用API,API不能调用MFC。
Win32 API是 Windows系统下32位 Application Program Interface 应用程序接口,MFC是Microsoft Function Class 微软函数类库, 前者更加底层,在MFC程序里,可以调用WIN32 API的,MFC本来就用了很多WIN 32API,MFC编写的程序可以用在各种Windows环境下的。
最后你要明白MFC提供的类大部分都是用来进行界面开发,关联一个窗口的动作。但是MFC所提供的类中大部分都不与一个窗口关联。就是说类的作用不是一个界面类,不实现一个窗口对象的控制。而是在一些WinOS中实现内部处理类。例如:数据库的管理等。所以说MFC并不只是一个功能简单的界面开发系统。
总的来说,MFC封装了Win32 API,OLE API,ODBC API等底层函数的功能,并提供更高一层的接口,简化了Windows编程。同时,MFC支持对底层API的直接调用。MFC是比较容易入手的,但是会在后续的学习中显得比较困难。希望本文对大家有所帮助