是微软基础类库的简称
MFC(Microsoft Foundation Classes),是微软公司提供的一个类库(class libraries),以C++类的形式封装了Windows的API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含的类包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。
MFC:微软基础类(Microsoft Foundation Classes),同VCL类似,是一种应用程序框架,随微软Visual C++开发工具发布。目前最新版本为10.0(截止2011年3月),并且发布了中文版。该类库提供一组通用的可重用的类库供开发人员使用,大部分类均从CObject 直接或间接派生,只有少部分类例外。
MFC应用程序的总体结构通常由开发人员从MFC类派生的几个类和一个CWinApp类对象(应用程序对象)组成。MFC 提供了MFC AppWizard 自动生成框架
Windows 应用程序中,MFC 的主包含文件为Afxwin.h
此外MFC的部分类为MFC/ATL 通用,可以在Win32 应用程序中单独包含并使用这些类。
由于它的易用性,初学者常误认为VC++开发必须使用MFC,这种想法是错误的。作为Application Framework,MFC的使用只能提高某些情况下的开发效率,只起到辅助作用,而不能替代整个Win32 程序设计。
1、MFC (Microsoft Foundation Class Library)中的各种类结合起来构成了一个应用程序框架,它的目的就是让程序员在此基础上来建立Windows下的应用程序,这是一种相对SDK来说更为简单的方法。因为总体上,MFC框架定义了应用程序的轮廓,并提供了用户接口的标准实现方法,程序员所要做的就是通过预定义的接口把具体应用程序特有的东西填入这个轮廓。Microsoft Visual C++提供了相应的工具来完成这个工作:AppWizard可以用来生成初步的框架文件(代码和资源等);资源编辑器用于帮助直观地设计用户接口;ClassWizard用来协助添加代码到框架文件;最后,编译,则通过类库实现了应用程序特定的逻辑。2、如前所述,MFC实现了对应用程序概念的封装,把类、类的继承、动态约束、类的关系和相互作用等封装起来。这样封装的结果对程序员来说,是一套开发模板(或者说模式)。MFC提供了一个Windows应用程序开发模式,对程序的控制主要是由MFC框架完成的,而且MFC也完成了大部分的功能,预定义或实现了许多事件和消息处理,等等。框架或者由其本身处理事件,不依赖程序员的代码;或者调用程序员的代码来处理应用程序特定的事件。
3、MFC是C++类库,程序员就是通过使用、继承和扩展适当的类来实现特定的目的。例如,继承时,应用程序特定的事件由程序员的派生类来处理,不感兴趣的由基类处理。实现这种功能的基础是C++对继承的支持,对虚拟函数的支持,以及MFC实现的消息映射机制。
theApp是全局变量, 在进入程序入口这前已实例化了,这是基本常识啊.cwinapp它派生自cwiinthread,c++的多态,就是利用基类来表达子类的行为.
mfc框架指的是程序入口_afxwinmain里面那段代码.基于对话框,单文档,多文档,都用得是这段代码.而不同的特性,则是靠实际派生类重载virtual函数来实现的(也就是所谓的多态的行为),
这是其一.
其二,main只是一个架子,对于一个框架程序来说,还是远远不够的.所以v s的向导在cwinapp派生类重载了相关的函数,完成了一切窗口建立所必需的流程(建立窗口类,注册窗口类,创建窗口等等).了解到这一点,用mfc编程就相当安逸了.
但是,mfc并不是如此简单,它相比传统的win32窗口建立多了点变化.问题就出在win32消息太多了,不可能为窗口类去定义所有的消息处理用virtual函数,所以引入消息映射表.
所以在窗口创建前,要放hook,保证各个相关都有机会去响应消息.这是很好的设计.
----------
以后你接触一些大程序的架构,你都能找到mfc架构的影子.其实这就是编程技法.看多了,你也会这么用设计的.
好好看下各向导下,InitInstance()提供的实现,你会找到答案的.
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)