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 ,大多数人一开始就开始学习 VC VC 是以 C++ 为语言基础的开发工具,而 C++ C 语言的扩充,故要学好 VC 最好是先学好 C C++      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   编程环境        我们仍然用 VC6 IDE( 集成开发环境 ) 来编写 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 编写程序关键是能够程序的来龙去脉,当然那样效率会很低,不比 VB PB 那么快,任何东西都是有得有失,如你熟悉用 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 Framework MFC 的使用只能提高某些情况下的开发效率,只起到辅助作用,而不能替代整个 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, 这跟 Pascal Dephi 的关系一个道理 ,Pascal Dephi 的语言基础 ,Dephi 使用 Pascal 规范来进行 Win 下应用程序的开发和编译 , 却不同于 Basic 语言和 VB 的关系 ,Basic 语言在 VB 开发出来被应用的年代已经成了 Basic 语言的新规范 ,VB 新加的 Basic 语言要素 , 如面向对象程序设计的要素 , 是一种性质上的飞跃 , 使 VB 既是一个 IDE, 又成长成一个新的程序设计语言 ),MFC BC++ 集成的 VCL 一样是一个非外挂式的软件包 , 类库 , 只不过 MFC 类是微软为 VC++ 专配的 ..

MFC
Win API C++ 的结合 ,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 进行了分类封装,并且为你创建了程序的一般框架, VCL VCLVisual Component Library的缩写,即可视组件库,它是 Delphi,C++Builder 等编程语言的基本类库。
它拥有封装纯粹,可扩展性强,操作方便等特点。如果是一个非常繁杂的Win32API,在经过VCL封装后,使用也是非常简便的。VCL支持类的嵌套,过程及函数的嵌套,如果你想在一个过程里声明一个类,或是声明另一个过程,那是完全可行的。过程内部的过程或是函数被称为 局部过程 或是局部函数
VCL
对事件的支持及封装也是非常完整的,通过事件对象的声明,可以将任意的外部事件源绑定到VCL控件。
DelphiVCL中,还提供了非常多的 API ,它们可以对软件开发提供进一步的支持。
VCL
的可扩展性使得编写控件变得非常简单,并且可以任意导入导出 ActiveX控件。同时,它也是平台无关的,可以在windows,linux,MaxOS或是其他 操作系统 下直接使用。

你可能感兴趣的:(mfc)