API(Application Programming Interface)的中文含义是应用编程接口。其实,它是程序员与Windows交互的最基本方式,包含了所有应用程序对构造操作系统的函数的调用,当然,其中也包含了相关的数据类型和结构。
什么是API
在Windows系统中,API保持着一贯的一致性。也就是说,从Windows 1.0以来,系统就提供了API函数的调用。随着系统的不断升级,API函数也不断地得到扩充,高版本的系统对低版本系统的API函数都提供了支持。现在,API函数已经扩充到了几千个。
正如大家所知,API函数首先出现在16位的系统中,从Windows 1.0到Windows 3.1,提供的API函数都是基于16位体系结构的,被称为Win16。从Windows NT开始,以后所有的Windows操作系统都基于32位体系结构,API函数也相应地基于32位体系结构,被称为Win32。Windows API和它的语法中的最大变化来自于从16位体系结构向32位体系结构的转化过程。
在Windows出现时,当时流行的Intel微处理器(如Intel 8086、8088和286)都是16位的。但是,从Intel 386开始的微处理器设计成32位字长的中央处理器,因此与硬件相适应的32位操作系统的出现和普及是必然的。16位系统的API函数在32位系统中都得到了支持,以确保与旧应用程序的兼容。但提供支持的方式并不是完全相同的,因为Windows NT/2000/XP和Windows 95/98的工作方式截然不同。在Windows NT/2000/XP中,Win16函数的调用通过一个转换层被转化成Win32函数的调用,然后被操作系统处理。在Windows 95/98中,操作的步骤正好相反,所有的Win32函数在转换层被转化为Win16函数调用,然后由操作系统处理。
由于Windows系统的各个版本之间会有区别,每一个操作系统都有一些其他操作系统所不支持的功能特性,所以编写的应用程序会有兼容性的问题。因为绝大部分的API函数都是兼容的,所以只要在编写程序时考虑到兼容性的问题,就能写出在不同的Windows操作系统中都可以很好运行的程序。
随着硬件的发展,64位微处理器的推出是必然的,Windows的后续版本中很有可能推出基于64位的操作系统。那么,API从32位平台向64位平台的转变又将是一次重大的转变。
为什么程序员需要API
使用C语言和原始的API绝不是进行Windows程序设计的惟一方法。现在有很多选择,包括快速的开发工具,但这种方法提供的是最佳的性能、最强大的功能、最有效的控制和最紧凑的应用程序,能最大限度地发掘Windows系统的灵活性。通过运用Windows API函数编程,用户将对Windows系统内部的运行机制有更深入的了解。
使用C语言和原始API函数编写的程序经过编译后,可执行文件相对较小。 除了Windows DLL之外,不需要其他外部库的支持。
即使使用其他开发工具,也经常会调用API函数,因为API函数直接针对Windows的底层,可以用简单的语句实现对系统功能的调用。几乎所有基于Windows平台的开发工具都用自己的语言对重要的API函数进行了重新编写和封装,以提供对这一功能的支持。所以,通过对原始的API进行分析和演练,可以帮助大家在其他开发工具中更好地理解和利用API函数。
在使用原始的API函数编程的过程中,可以控制Windows消息的发送和接收,灵活地调用各种系统功能,这对理解Windows的运行机制很有好处。在编程的过程中,程序员几乎拥有对程序执行的绝对控制权,这在其他开发环境下是很难做到的。
既然用原始API函数编程有很多有利之处,那么为什么在实际运用中并不会总选择它作为开发的工具呢?这是因为它有一个很明显的不足之处,即要为实现任何一个很小的功能而编写很多代码,这与开发的时间和效率要求是相违背的,况且用它实现高级的控制所需花费的精力将十分惊人。所以,只有在对代码的执行效率有严格的控制时,才会使用这种方法编程。本文的主要目的是讲解一种编程的方法,让大家更好地理解Windows的运行机制,在其他开发工具中更好地利用API函数。
Windows XP API的新特性
随着Windows操作系统的每一次升级,API都会得到较大的扩充,Windows XP系统的升级也不例外。在Windows XP中增加较多的API函数是关于界面和图形的,Windows XP在界面方面号称是Windows 95以来改变最大的一次升级。在图形方面,由于GDI+(Graphics Device Interface +)的引入而提供的一系列功能强大的函数,使编写程序更容易,运行程序也更快捷。有关具体的函数,在以后的章节中会更新。 |