小甲鱼 发表于 2014-4-30 12:59:03

第000讲:【扫盲】API、SDK 和 MFC

【扫盲】为初学者普及计算机编程中涉及的一些专业词语。

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() 这个函数实现的:




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,学习就会变得事半功倍了!


最好是明天 发表于 2014-4-30 20:27:06

win32开发难道是用c或者c++?

cuibaowenown2 发表于 2014-4-30 22:11:44

地板了,只有,楼上拿命来:huffy:

木叶客 发表于 2014-4-30 22:41:40

哈哈,期待已久!

向往青莲 发表于 2014-4-30 23:10:43

只是为了前排露脸。。楼下看着哈。。。

706372834 发表于 2014-4-30 23:13:49

哈哈,期待已久!

老宇不老 发表于 2014-4-30 23:44:14

鱼哥,win32汇编若是决定放弃就干脆从鱼c博客上删了罢。。。

shenyaowen 发表于 2014-5-1 00:07:13

期待哦 windos要来了终于:shy::shy::shy::shy:

帅鸟_Josh 发表于 2014-5-1 00:54:25

{:5_109:}赶来围观,终于出Windows程序设计了

小甲鱼 发表于 2014-5-1 01:16:21

老宇不老 发表于 2014-4-30 23:44
鱼哥,win32汇编若是决定放弃就干脆从鱼c博客上删了罢。。。

Win32汇编会重录,如果是自学的朋友,已经推出的56讲其实适合入门知识普及啦^_^

Win2003 发表于 2014-5-1 10:36:14

期待已久......

无艸忘居 发表于 2014-5-1 17:22:23

看到新课程来了,火速赶来围观:lol:

geekcat 发表于 2014-5-1 18:20:26

小甲鱼 发表于 2014-5-1 01:16 static/image/common/back.gif
Win32汇编会重录,如果是自学的朋友,已经推出的56讲其实适合入门知识普及啦^_^

Win32汇编会重录??
我正准备学习这部教材呢!
要不要等你重录时跟着学习?

pcode 发表于 2014-5-1 19:20:58

过来支持下{:1_1:}

coffeemlx 发表于 2014-5-1 20:48:36

小甲鱼,为什么不用屏幕录像专家录制视频呀!

vvqboy 发表于 2014-5-1 21:10:18

最好是明天 发表于 2014-4-30 20:27 static/image/common/back.gif
win32开发难道是用c或者c++?

嗯,是的,听说都是用C和汇编

牡丹花下死做鬼 发表于 2014-5-1 21:34:05

最好是明天 发表于 2014-4-30 20:27 static/image/common/back.gif
win32开发难道是用c或者c++?

难道不行么??

geekcat 发表于 2014-5-1 22:14:22

coffeemlx 发表于 2014-5-1 20:48 static/image/common/back.gif
小甲鱼,为什么不用屏幕录像专家录制视频呀!

不喜欢看EXE格式的视频,没办法加速看!还是希望跟原来一样MP4格式!

Tanamaz 发表于 2014-5-2 10:26:51

严重的支持下

gaozhefeng 发表于 2014-5-2 10:55:33

给鱼哥点个赞~
页: [1] 2 3 4 5 6 7 8 9
查看完整版本: 第000讲:【扫盲】API、SDK 和 MFC