文档介绍:第1章 Win32 API基础
引言
对于一个程序员来讲,每天在“枯燥”的数字世界里博弈,面对这样那样的问题与挑战,不但需要解决用户各种各样的需求和按时完成老板交给的任务,而且每个程序员都力求使自己开发的应用系统尽善尽美,独具匠心。但当我们拘泥于开发工具如PowerBuilder(后文简称为PB)、Visual Basic、Delphi提供的各种各样的功能时,我们常常感叹“某某语言为什么没有提供Windows系统的某某功能”,这时如果去请教一些程序设计高手,他会告诉你使用API吧!作为游离于开发工具之外,而又实实在在存在于系统中的一种东西,API又似乎披上了一件神秘的外衣。
回顾Windows发展的历史,20世纪90年代初期,当微软帝国逐渐崛起,视窗操作系统开始占据主导地位的时候,开发Windows下的应用也逐渐风行起来。不过,那时候的程序员可不比我们现在幸福,他们缺乏高效可视化的开发工具,大家必须借助于微软提供的“Application Programming Interface”,也就是我们常说的应用程序编程接口(API,为了表述上的方便,在所有章节中通称为API或API函数)。通过API中的各种各样的函数,犹如儿童搭积木一样来构建应用系统的各种界面和功能。那时要开发一个应用系统,程序员需要熟记大量API函数,了解Windows系统的工作机制,非一般人所能胜任。然而随着软件技术的飞速发展,在Windows平台上出现了很多优秀的面向对象的可视化编程工具,程序员可以采用“所见即所得”的编程方式来开发具有精美用户界面和功能强大的应用程序。
Visual C++、Visual Basic、PB、Delphi这些优秀可视化编程工具的诞生与发展,使程序设计不再是阳春白雪,越来越多的人投入到这个行业里来,造就了今天软件业的空前繁荣。在这些工具中,提供了各种各样的控件,为控件定义了众多的属性和方法(函数),通过属性和方法将Windows 系统底层函数封装起来,从而方便地使程序员把精力放在程序整体功能和企业的业务逻辑实现上,而不必过于关注界面设计、系统通用功能的实现等技术细节,由此带来的是应用程序开发难度的降低和开发效率的极大提高。
虽然可视化编程工具使应用系统的开发变得简单快捷,但它们一般只提供Windows的常用功能,并且每一种程序开发工具都有其着重点,对于比较复杂和特殊的功能来说,开发工具提供的控件常常无法实现,这时就不可避免地涉及到系统API函数的调用。实际上如果要开发出更灵活、更实用、更具效率的应用程序,必然要直接使用到系统的API函数。而对Windows系统本身来讲,它的运行也是建立在众多包含API函数的动态库之上的。
对于PB,API函数有别于它本身提供的函数,被称之为外部函数。既然是“外来户”,在使用之前就涉及到函数的声明、数据类型的转换等一系列问题。问题的解决追根溯源还是离不开微软,微软在其为开发者提供的MSDN(微软开发者网络)技术文档库中,详细列出了每个函数的原型和函数参数的意义。但我们无法把这些东西照搬到PB中,因为在MSDN中对API函数的所有的解释都是以C语言为准的。
然而,Sybase公司并不为PB下如何访问Windows系统的成千上万个API函数提供完善的技术支持。《用户指南》和《应用程序开发技术》文档中对此的介绍寥寥数页,在其官方的网站的相关文章也不过十多篇。即使最基本的PB下的函数声明、结构和常量定义迄今为止尚未见到Sybase官方的有关技术文档。
这样,对PB程序员来讲,一旦碰上与API相关的问题,就可能处于两难的境地。一方面,Sybase公司认为API编程是微软的事,另一方面微软不可能为PB程序员提供无偿的技术服务。但纵观PB下API函数访问的各个方面,从函数的声明到结构和常量的定义,即使同相似的Visual Basic语言相比也有很多差异,同时在PB中访问系统API函数也存在着许多难点和疑点,常令系统开发人员困惑。针对上述情况,编写本书的目的就是力图在这方面有所突破,并结合PB的特点,从API的基本概念入手,结合丰富的实例,全面探讨和阐述如何通过访问系统的API函数,强化应用系统的功能,提高程序的设计水平。
微软在MSDN中列出了数千个API函数(到底有多少个,似乎微软也没有公布),这么多的函数逐个研究是不可能的、而且是不现实的,同时也是没有必要的。我们需要的是掌握API程序设计的一种理念和其中的精髓,需要的是当我们迷茫时有一本好的参考书或一位好的老师。只要通过努力去感悟包括PB在内的每一种程序设计语言,我们必然会从最初的“迷时师度”上升到“悟时自度”的境界,总有一天我们也会写出一本名为《不过如此——API编程》之类的书籍来。