如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
Win32API编程指南(1)起步本书的内容本书将会展示给您使用Win32API来开发windows程序的基本方法。开发语言采用C语言,大多数C++编译器也都能够正常编译C语言的程序。事实上,书中的绝大部分内容对于任何调用API的语言都是有效的,像JAVA,汇编语言,以及VisualBasic。但我不会用这些语言来编写范例代码,先前也有一些人尝试用其它的语言来实现本书中的例子,很可惜,没有几个人成功。本书不会教您什么是C语言,也不会教您如何使用特定的编译器(BorlandC++,VisualC++,LCC-Win32,等等)。最后,我会在附录中提供一些我个人的使用编译器的经验。如果您不知道宏或typedef是什么,不知道switch语句是如何工作的,请现在就放下本书,先找一本介绍C语言的书读一读。重要的说明在全书中,通常我会指出一些非常重要的东西,这些都是必读的。因为它们常常把人弄得糊里糊涂,如果您不读这些东西,很有可能也会身陷其中。首先:范例压缩包里的源代码是必读的!我没有在书中包含全部的代码,而只包含了那些与我们当前讨论的内容有关的代码片断。如果您想详细了解代码在程序中的体现,就必须去参看压缩包内提供的源代码。其次:通读所有的内容!如果您在书中的某个部分有什么疑问,请耐心的读下去,也许不久,在后面的部分中就会找到答案。如果您非想要立刻就弄清楚这个问题,至少也要保证,在通过IRC或者Email来寻求答案之前,你已经浏览或者搜索了其余的部分了。另外,请记住,题目A中涉及的问题,有可能在B或者C甚至L中才会做出解答,所以还是先泛读一遍比较好。好了,以上就是我想说的全部注意事项了,接下来让我们看一些实际的例子吧。最简单的Win32程序即使您完全是个初学者,至少也要保证能够正确编译一个最基本的windows程序。将下面的代码敲入编辑器,如果一切正常,您就能创建一个最基本的程序了。切记,要将它作为一个C源文件来编译,而不是C++源文件。虽然这可能没什么关系,但是,既然我们的代码完全是用C写的,就保证它从一开始的时候就朝着一个有益的方向前进吧。本书中,绝大多数情况下,都要求将代码保存为a.c而不是a.cpp。如果您觉得这个名字很不爽,那就将它保存为test.c吧。#include<windows.h>intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPSTRlpCmdLine,intnCmdShow){MessageBox(NULL,"Goodbye,cruelworld!","Note",MB_OK);return0;}如果程序报错,首先请看一看您是否理解错误的提示信息,在您的编译器的帮助或者联机文档中搜索一下这个错误的详细描述。有一点需特别注意,确保已将您的程序指明为Win32GUI程序,而不是控制台程序。很抱歉,对于排错的问题,我也没什么好办法。因为根据编译器的不同,错误提示的信息也不同(而且人与人也不同)。程序编译时也可能会有一些警告,例如没有使用WinMain()函数中的参数,这是正常现象,不用理会。至此,我们已经建立了一个能正常运行的程序,接下来让我们来分析一下这段代码....intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPSTRlpCmdLine,intnCmdShow)WinMain()函数等价于DOS或者UNIX编程中的main()函数。这是我们程序执行的入口点。参数的含义如下:HINSTANCEhInstance程序执行模块的句柄。(内存中的.exe文件)。HINSTANCEhPrevInstance在Win32程序中总为NULL。LPSTRlpCmdLine一个字符串的命令行参数。不包括程序名。intnCmdShow一个可能传递给ShowWindow()函数的整数。稍后我会解释。hInstance主要用来装载资源和执行一些基于其它模块的功能。模块是指装载到程序中的exe或者dll文件。在本书的大部分(不是全部)内容中,它们都是指exe文件。hPrevInstance在过去的Win16程序中,用来指向一个已经运行了的程序的实例。现在已经不再使用了,在Win32中,您完全可以忽略这个参数。调用方式WINAPI指明了调用的方式,它被定义为_stdcall。即使您不明白,也不用担心。这并不影响我们的学习。记住在这里它是必需的就行了。Win32数据类型您可能发现了,许多关键字在