SDK和MFC的区别

来源:互联网 发布:厦门华厦学院网络管理 编辑:程序博客网 时间:2024/05/29 06:50

SDK 就是Software Development Kit 软件开发包
MFC 就是Microsoft Foundation Classes 微软函数类库

MFC是对API函数的封装,也算是vc里的SDK

用VC编写Windows程序有两种:1. Windwos c方式(SDK),2.C++方式:即对SDK函数进行包装,如VC的MFC,BCB的OWL等。SDK编程就是直接调用Windows的API进行编程,平时人们常说"用SDK写程序"就是指用Windows的API函数来写程序,API由上千个API函数组成(Win95的API有两千多个)。而MFC是API的封闭,结合面向对象程序设计的继承性和多态性组成一个个的"类",共由一百多个类组成。尽管MFC比SDK方便,但要深入VC,直接去学MFC却是不明智的选择。只有在熟悉了MFC的运行机制的情况下,才有可能深入下去。所以学VC最好是先学用SDK编写程序,在此期间深入掌握Windows操作系统的工作原理和各API函数的应用,然后再深入MFC. SDK是基于C语言的,而MFC是基于C++的,这是最根本的区别。MFC主要封装的是界面、文件、WinInet和线程等函数。MFC除了封装API,最重要的是它的体系结构,它所使用的Doc/View结构是SDK中没有的,这种架构是比较特殊的。尽管Doc/View结构不是微软的发明,但它是MFC的特色。微软开发Windows时使用的是C语言,所以最初设计SDK时并没有考虑C++。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------
     经典问题:请问sdk与mfc区别有那些,编码时区别又在那里?我有一些个人的认识,长久得不到印证,请指导!对于上述两问题我是这样认识的:1、sdk与mfc的区别在于mfc封装了大部分的api,而sdk只是mfc的一个真子集。2、sdk与mfc编码时的区别为:SDK编码时,包括程序框架(比如消息处理器、主窗口消息回调函数等)在内的代码全为自己编制,但所利用的API等接口全来自SDK的头文件和库文件;而mfc系统会生成程序框架,当然接口全来自于mfc。不知我的认识有没有认识不对或不全的地方。
    
     答: 说“SDK只是MFC的一个真子集”是错误的,因为有部分API函数MFC没有封装,不过这些函数你在MFC程序中都可以使用。MFC主要封装的是界面、文件、WinInet和线程等函数。SDK是基于C语言的,而MFC是基于C++的,这是最根本的区别。MFC除了封装API,最重要的是它的体系结构,它所使用的Doc/View结构是SDK中没有的,这种架构是比较特殊的。尽管Doc/View结构不是微软的发明,但它是MFC的特色。 
     
    问: 
    "而MFC是基于C++的",我原来以为MFC是VC专用的。在C++Builder里面也可以用MFC库么?如果不能,C++Builder用什么呢?SDK基于C语言,那由什么来基于C++呢? 
    答:MFC最初是由微软设计,专供VC++用的,但是C++ Builder也支持,参见QA001956 "如何使C++Builder VCL程序能使用MFC的类"。C++ Builder自己也有一个类库,叫VCL。以前的Borland C++使用OWL类库。微软开发Windows时使用的是C语言,所以最初设计SDK时并没有考虑C++。