sdk&mfc&vcl

SDK其实很简单,SDK 就是 Software Development Kit 的缩写,中文意思就是软件开发工具包
  这是一个覆盖面相当广泛的名词,可以这么说:辅助开发某一类软件的相关文档、范例和工具的集合都可以叫做“SDK”
  具体到我们这个系列教程,我们后面只讨论广义 SDK 的一个子集——即开发 Windows 平台下的应用程序所使用的 SDK
  呵呵,其实上面只是说了一个 SDK 大概的概念而已,理解什么是 SDK 真有这么容易吗?恐怕没这么简单!为了解释什么是 SDK 我们不得不引入 API、动态链接库、导入库等等概念。^
  _^,不要怕,也就是几个新的名词而已,我也是到了大学快结束的时候才体会到其实学习新知识就是在学习新名词、新概念和新术语。

  首先要接触的是“API”,也就是 Application Programming Interface,其实就是操作系统留给应用程序的一个调用接口,应用程序通过调用操作系统的 API 而使操作系统去执行应用程序的命令(动作)。其实早在 DOS 时代就有 API 的概念,只不过那个时候的 API 是以中断调用的形式(INT 21h)提供的,在 DOS 下跑的应用程序都直接或间接的通过中断调用来使用操作系统功能,比如将 AH 置为 30h 后调用 INT 21h 就可以得到 DOS 操作系统的版本号。而在 Windows 中,系统 API 是以函数调用的方式提供的。同样是取得操作系统的版本号,在 Windows 中你所要做的就是调用 GetVersionEx() 函数。
  可以这么说,DOS API “Thinking in 汇编语言的,而 Windows API 则是“Thinking in 高级语言的。
  DOS API 是系统程序的一部分,他们与系统一同被载入内存并且可以通过中断矢量表找到他们的入口,那么 Windows API 呢?要说明白这个问题就不得不引入我们下面要介绍得这个概念——DLL
  DLL(又是一个缩写,感觉 IT 这个行业里三字头缩写特别多),即 Dynamic Link Library(动态链接库)。我们经常会看到一些 .dll 格式的文件,这些文件就是动态链接库文件,其实也是一种可执行文件格式。跟 .exe 文件不同的是,.dll 文件不能直接执行,他们通常由 .exe 在执行时装入,内含有一些资源以及可执行代码等。其实 Windows 的三大模块就是以 DLL 的形式提供的(Kernel32.dllUser32.dllGDI32.dll),里面就含有了 API 函数的执行代码。为了使用 DLL 中的 API 函数,我们必须要有 API 函数的声明(.H)和其导入库(.LIB),函数的原型声明不难理解,那么导入库又是做什么用的呢?我们暂时先这样理解:导入库是为了在 DLL 中找到 API 的入口点而使用的。
  所以,为了使用 API 函数,我们就要有跟 API 所对应的 .H  .LIB 文件,而 SDK 正是提供了一整套开发 Windows 应用程序所需的相关文件、范例和工具的工具包。到此为止,我们才真正的解释清楚了 SDK 的含义。
  由于 SDK 包含了使用 API 的必需资料,所以人们也常把仅使用 API 来编写 Windows 应用程序的开发方式叫做“SDK 编程。而 API  SDK 是开发 Windows 应用程序所必需的东西,所以其它编程框架和类库都是建立在它们之上的,比如 VCL  MFC,虽然他们比起“SDK 编程来有着更高的抽象度,但这丝毫不妨碍它们在需要的时候随时直接调用 API 函数说说SDK     时下学计算机的大多想学编程,且大部分都是在Windows下工作的,而目前学得最热门的是VC,大多数人一开始就开始学习VCVC是以C++为语言基础的开发工具,而C++C语言的扩充,故要学好VC最好是先学好CC++    VC编写Windows程序有两种:1. Windwos c方式(SDK)2. C++方式:即对SDK函数进行包装,如VCMFC,BCBOWL等。SDK编程就是直接调用WindowsAPI进行编程,平时人们常说" SDK写程序"就是指用WindowsAPI函数来写程序,API由上千个API函数组成(Win95API有两千多个)。而MFCAPI的封闭,结合面向对象程序设计的继承性和多态性组成一个个的"",共由一百多个类组成。尽管MFCSDK方便,但要深入VC,直接去学MFC却是不明智的选择。只有在熟悉了MFC的运行机制的情况下,才有可能深入下去。所以学VC最好是先学用SDK编写程序,在此期间掌握Windows操作系统的工作原理和各API函数的应用,然后再深入MFC 编程环境     我们仍然用VC6IDE(集成开发环境)来编写SDK程序,启动VC6后选择File菜单的New...选项,在出现的New对话框的Projects标签内选择Win32 Application,然后在Projects Name指定项目的名字,在Location中指定路径后按OK按钮,在出现的对话框中,如果你想要用C语言来写程序可以选择An emtpy project,如果你想创建一个带有WinMain入口函数和普通参数的设定的项目,可以选择A simple Win32 application,如果您想创建一个简单典型的“Hello World!”Win32SDK application应用程序,可以选择A typical "Hello World!" application。确定项目类型后按Finish完成。    VC6环境下,你依然可以使用资源编辑器和ClassWizar等工具完成程序的编写。用SDK编写程序关键是能够程序的来龙去脉,当然那样效率会很低,不比VBPB那么快,任何东西都是有得有失,如你熟悉用SDK写程序后,对MFC会比较容易上手的,关键要熟悉C++的三大特性。MFC MFC,微软基础类(Microsoft Foundation Classes),同VCL类似,是一种Application Framework,随微软Visual C++ 开发工具发布。目前最新版本为8.0(截止2007年初)。该类库提供一组通用的可重用的类库供开发人员使用。大部分类均从CObject 直接或间接派生,只有少部分类例外。

MFC
应用程序的总体结构通常由 由开发人员从MFC类派生的几个类和一个CWinApp类对象(应用程序对象)组成。MFC 提供了MFC AppWizard 自动生成框架。

Windows
应用程序中,MFC 的主包含文件为"Afxwin.h"

此外MFC的部分类为MFC/ATL 通用,可以在Win32 应用程序中单独包含并使用这些类。

由于它的易用性,初学者常误认为VC++开发必须使用MFC。这种想法是错误的。作为Application FrameworkMFC的使用只能提高某些情况下的开发效率,只起到辅助作用,而不能替代整个Win32 程序设计。
----------------------------------------------------
(下面是原词条)
----------------------------------------------------
MFC,
微软基础类(Microsoft Foundation Classes),实际上是微软提供的,用于在C++环境下编写应用程序的一个框架和引擎,VC++WinOS下开发人员使用的专业C++ SDK(SDK,Standard SoftWare Develop Kit,专业软件开发平台),MFC就是挂在它之上的一个辅助软件开发包,MFC作为与VC++血肉相连的部分(注意C++VC++的区别:C++是一种程序设计语言,是一种大家都承认的软件编制的通用规范,VC++只是一个编译器,或者说是一种编译器+源程序编辑器的IDE,WS,PlatForm,这跟PascalDephi的关系一个道理,PascalDephi的语言基础,Dephi使用Pascal规范来进行Win下应用程序的开发和编译,却不同于Basic语言和VB的关系,Basic语言在VB开发出来被应用的年代已经成了Basic语言的新规范,VB新加的Basic语言要素,如面向对象程序设计的要素,是一种性质上的飞跃,使VB既是一个IDE,又成长成一个新的程序设计语言),MFCBC++集成的VCL一样是一个非外挂式的软件包,类库,只不过MFC类是微软为VC++专配的..

MFC
Win APIC++的结合,API,即微软提供的WinOS下应用程序的编程语言接口,是一种软件编程的规范,但不是一种程序开发语言本身,可以允许用户使用各种各样的第三方(如我是一方,微软是一方,Borland就是第三方)的编程语言来进行对Win OS下应用程序的开发,使这些被开发出来的应用程序能在WinOS下运行,比如VB,VC++,Java,Dehpi编程语言函数本质上全部源于API,因此用它们开发出来的应用程序都能工作在WinOS的消息机制和绘图里,遵守WinOS作为一个操作系统的内部实现,这其实也是一种必要,微软如果不提供API,这个世上对Win编程的工作就不会存在,微软的产品就会迅速从时尚变成垃圾,上面说到MFC是微软对API函数的专用C++封装,这种结合一方面让用户使用微软的专业C++ SDK来进行Win下应用程序的开发变得容易,因为MFC是对API的封装,微软做了大量的工作,隐藏了好多程序开发人员在Win下用C++ & MFC编制软件时的大量内节,如应用程序实现消息的处理,设备环境绘图,这种结合是以方便为目的的,必定要付出一定代价(这是微软的一向作风),因此就造成了MFC对类封装中的一定程度的的冗余和迂回,但这是可以接受的..

最后要明白MFC不只是一个功能单纯的界面开发系统,它提供的类绝大部分用来进行界面开发,关联一个窗口的动作,但它提供的类中有好多类不与一个窗口关联,即类的作用不是一个界面类,不实现对一个窗口对象的控制(如创建,销毁),而是一些在WinOS(MFC编写的程序绝大部分都在WinOS中运行)中实现内部处理的类,如数据库的管理类等,学习中最应花费时间的是消息和设备环境,C++MFC的学习中最难的部分是指针,C++面向对像程序设计的其它部分,如数据类型,流程控制都不难,建议学习数据结构C++..http://home.nuc.edu.cn/~yayu/look.php?id=25
MFC
是微软封装了的API。什么意思呢?windows作为一个提供功能强大的应用程序接口编程的操作系统,的确方便了许多程序员,传统的win32开发(直接使用windows的接口函数API)对于程序员来说非常的困难,因为 
API
函数实在太多了,而且名称很乱,从零构架一个窗口动辄就是上百行的代码。MFC是面向对象程序设计与Application framework的完美结合,他将传统的API进行了分类封装,并且为你创建了程序的一般框架,VCLVCLVisual Component Library的缩写,即可视组件库,它是Delphi,C++Builder等编程语言的基本类库。
它拥有封装纯粹,可扩展性强,操作方便等特点。如果是一个非常繁杂的Win32API,在经过VCL封装后,使用也是非常简便的。VCL支持类的嵌套,过程及函数的嵌套,如果你想在一个过程里声明一个类,或是声明另一个过程,那是完全可行的。过程内部的过程或是函数被称为局部过程或是局部函数
VCL
对事件的支持及封装也是非常完整的,通过事件对象的声明,可以将任意的外部事件源绑定到VCL控件。
DelphiVCL中,还提供了非常多的API,它们可以对软件开发提供进一步的支持。
VCL
的可扩展性使得编写控件变得非常简单,并且可以任意导入导出ActiveX控件。同时,它也是平台无关的,可以在windows,linux,MaxOS或是其他操作系统下直接使用。
posted @ 2008-03-29 22:16  lsjwzh  阅读(404)  评论(0编辑  收藏  举报