知道Windows SDK是什么吗?

系统 Windows
你也许了解微软。了解比尔盖茨,你是Windows的老用户。不过Windows中的很多功能也许你不能完全掌握吧。你是否了解什么是Windows SDK?Windows SDK是什么?

你也许了解微软。了解比尔盖茨,你是Windows的老用户。不过Windows中的很多功能也许你不能完全掌握吧。你是否了解什么是Windows SDK?Windows SDK是什么?

SDK即software develope kit(软件开发工具包),它包含了进行Windows软件开发的文档和API函数的输入库、头文件(因为API在动态链接库中,这些动态链接库是系统的组成部分因此不用再提供,而输入库和头文件则必须,这样才能在你的程序中使用API函数)。早期SDK是一个单独发放的包,现在在Visual C++和其他一些开发环境中已经包含了它。如果你已经安装了VC++那么就可以开始编写Windows程序了。随着Windows系统的发展,SDK的内容越来越多,我们只要抓住最基本的方面。至于其他专门的主题,就根据自己的兴趣和技术方向进一步学习了。

第一个Windows程序

如果你已经开始,你的教材应该是那本经典的programming windows (petzold)或者是一本相似的书。但无论哪本书,一开始你都会面对一个基本的Windows SDK程序,这个程序有几十行。尽管也不算长,但比C版的hello world长多了。更糟的是,里面充斥着奇怪的变量类型和常量定义,不过先不用被它吓住,让我们看看这里面有些什么。首先会有一个#include <windows.h> ,嗯,没什么奇怪的,这和#inclde <stdio.h>没什么两样。然后是一个函数声明:LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ; 有点困惑了,一下子就出来了好几个“生词”,而且函数名前面有两个修饰符也是以前没有遇到的。好在我们还可以辨认出这是一个函数声明。再往下看是WinMain函数,又是一堆生词,我猜想你可能已经开始郁闷了。想一遍看懂这个程序确实困难,所以看不懂也没关系。看不下去了可以看看书上的讲解。这篇文章并不是要完整分析这个程序的,hfire不可能有petzold讲的好。在这里hfire帮你分析一下一些陌生的东西。
首先说Windows的数据类型。尽管这些数据类型看上去很陌生,其实它们是由C的基本数据类型define的。比如UINT就是unsinged int,PSTR就是pointer to string 的意思,猜猜就知道是char * 。Windows还有很多系统定义的结构体,比如WNDCLASS,MSG等,这些东西见的多了就自然明白了。Windows还有一个重要的概念,句柄。通过句柄就可以操作Windows对象。HWND,HINSTANCE,HDC等都是句柄。
再说说Windows程序的结构。一般有一个WinMain函数作为程序的入口点,在WinMain里面定义窗口类,进行消息循环。消息循环就是那个普通的while循环,在其中接收消息、分发消息。然后是窗口函数WndProc,名字可以自己定。在其中用一个大的switch结构检索消息,在每个case下面写处理消息的代码。最简单的Windows SDK程序只要写这两个函数就够了。等你的程序写长了,就要把特定的消息处理代码写成函数,以便在处理消息时调用,甚至你可以使用C++来写程序。等你熟悉这种结构以后,就可以任意发挥了。

几种Windows编程方法的辨析

很多初学者往往会将Windows编程和VC++混为一谈。打开VC++的新建项目,可以看到VC++支持很多种工程。包括命令行的,MFC的,还有就是Win32 Application,即SDK程序。使用VC++未必是编写SDK程序,编写SDK程序也未必要用VC++。 编写Windows程序的方法也不止SDK一种,还包括使用类库如MFC,OWL,使用快速开发工具如VB,Delphi。这些方法各有各的用处。使用SDK无疑是最麻烦的了,我们学习SDK也并非是为了用它来编软件,虽然它可以,主要是为了对Windows编程有比较清晰的认识,这样你使用MFC时就可以做到“胸中自有沟壑”。

通过本文你就全面了解了Windows SDK了吧。

【编辑推荐】

  1. 解决Windows 7操作系统关机时扰民的Windows更新
  2. Windows 7系统下5个常见故障解决方法
  3. 八个问题之后放心安装Windows 7
  4. 最新发布硬盘安装Windows 7四种方法
  5. Windows 7是企业强心剂还是华丽炸弹?
责任编辑:小霞 来源: 机械工业出版社
相关推荐

2021-08-26 21:55:38

DPU架构数据

2022-11-28 00:04:17

2022-12-21 08:04:19

socket图解网络

2021-04-11 11:20:26

数字人民币数字货币区块链

2015-08-24 09:23:25

2015-03-17 09:39:05

2021-03-29 14:12:41

云计算区块链

2018-08-20 20:46:07

2019-04-11 10:13:59

2021-10-09 07:10:32

Shell脚本linux

2021-09-08 22:38:56

区块链公有链网络

2012-03-16 21:25:14

Windows Pho

2019-08-16 09:07:47

RedisNoSQL数据库

2022-09-28 18:16:34

JavaJDK

2010-11-01 01:25:36

Windows NT

2023-12-20 08:23:53

NIO组件非阻塞

2021-11-12 05:59:23

容灾备份5G

2015-12-01 13:33:51

UnikernelLinux运维

2018-06-27 16:20:56

2019-06-14 15:36:13

Windows 10安全PC
点赞
收藏

51CTO技术栈公众号