API:Application Programming Interface -- 应用程序编程接口
SDK:Software Development Kit -- 软件开发工具包
MFC:Microsoft Foundations Classes -- 微软基础类
API:应用程序编程接口
应用程序接口为:“计算机操作系统(Operating system)或程序库提供给应用程序调用使用的代码”。其主要目的是让应用程序开发人员得以调用一组例程功能,而无须考虑其底层的源代码为何、或理解其内部工作机制的细节。API本身是抽象的,它仅定义了一个接口,而不涉入应用程序如何实现的细节。
举个例子:当我们使用 C 语言编程,调用 printf("Hello FishC\n") 这个 API 函数向显示器输出字符串"Hello FishC"的时候,我们并不需要关注显示器是如何绘制这个字符串的,我们只需要知道调用 C 语言提供的 printf() 这个 API 函数即可。
Windows 程序设计有两种方式: C语言方式(SDK)和 C++方式(对SDK函数进行包装,如VC中的MFC、BCB中的VCL)。
SDK:软件开发工具包
一般是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等创建应用软件的开发工具的集合。
Windows SDK 编程简单的说就是使用 C 语言调用 Windows 提供的 API 函数的编程。例如下边这个对话框就是简单的调用 MessageBox() 这个函数实现的:
<ignore_js_op>
MFC:微软基础类
MFC 是一个微软公司提供的类库(class libraries),以 C++ 类的形式封装了 Windows API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含的类包含大量 Windows 句柄封装类和很多 Windows 的内建控件和组件的封装类。
简而言之,SDK 编程就是直接利用 Windows 提供的 API 函数进行编程,而 MFC 是利用类的概念对 API 函数进行封装,结合面向对象的继承、多态组成一个个类,共有一百多个类组成。
为什么不推荐初学者学习 MFC?
微软千辛万苦封装了个 MFC,但很多资深程序员反而警告初学者不要去学习 MFC,这是为什么呢?
对于程序员来说,操作系统的功能完全是由 API 来定义。也就是说,操作系统若能够完成的事情,都会提供相应的 API 供调用。因此,搞熟这些 API 对你理解 Windows 的运行机制非常有帮助。今后你无论使用什么来编写 Windows 程序,都是水到渠成。
API 函数本身就是进行了一层封装(例如上边我们提到的,我们根本不需要去理解如何在屏幕上显示字符串的原理),而 MFC 是再对 API 进行封装。因此初学者如果直接学习 MFC 编程,就很难理解 Windows 的运行原理,而不理解原理的学习就会显得亦步亦趋。
反过来,如果当你首先掌握了这些 API 函数以及 Windows 的运行机制,你再来学习 MFC,学习就会变得事半功倍了!