第一节:API 基础
API 说到底就是一系列的底层函数,是系统提供给 用户用于进入操作系统核心,进行高级编程的途径。通
过在 Visual Basic 应用程序中声明外部过程就能够 访问 Windows API(以及其它的外部 DLLs)。在声明
了过程之后,调用它的方法与调用 Visual Basic 自 己的过程相同。要声明一个 DLL 过程,需要在代码窗
口的"声明"部分增加一个 Declare 语句,如果该过 程返回一个值,应将其声明为 Function。例如:
Declare Function publicname Lib "libname" [Alias "alias"] [([[ByVal] variable [As type] [,
[ByVal] variable [As type]]...])] As Type
如果过程没有返回值,可将其声明为 Sub。
缺省情况下,在标准模块中声明的 DLL 过程,可 以在应用程序的任何地方调用它。在其他类型的模块 中
定义的 DLL 过程是模块私有的,必须在它们前面 加上 Private 关键字,以示区分。特别提请注意的 是,
在 32 位的 Visual Basic 中过程名是区分大小 写的。而在以前的 16 位版本中并不区分大小写,这 是初
学者容易出错的地方。
Declare 语句中的 Lib 子句用来告诉 Visual Basic 如何找到包含该过程的 dll 文件。如果引用的过 程属
于 Windows 核心库(User32、Kernel32 或 GDI32),则可以不包含文件扩展名。例如:
Declare Function GetTickCount Lib "kernel32" Alias "GetTickCount"() As Long。对于其它
DLL, Lib 子句须指定文件的路径及扩展名。
如果调用的 Windows API 过程要使用字符串,那 么在声明语句中必须增加一个 Alias 子句,以指定 正
确的字符集。包含字符串的 Windows API 函数实 际有两种格武 ANSI 格式 Unicode 格式。因此,在
Windows 头文件中,每个包含字符串的函数都同时有 ANSI 版本和 Unicode 版本。
例如,下面是 SetWindowText 函数的两种 C 语言描 述。可以看到,第一个描述将函数定义为
SetWindowTextA, 尾部的"A"表明它是一个 ANSI 函数:
SetWindowTextA(HWND hWnd,LPCSTR lpString);
第二个描述将它定义为 SetWindowTextW,尾部的 "w"表明它是一个 Unicode 函数:
SetWindowTextW(HWND Hwnd,LPCWSTR lpString);
因为两个函数实际的名称都不是"SetWindow Text",要引用正确的函数就必须增加一个 Alias 子句:
Private Declare Function SetwindowText Lib "user32" Alias "SetWindowTextA"(ByVal hwnd
As Longg,ByVal lpString As String) As Long
请注意, Alias 子句后面的字符串必须是过程的 真正名称,必须是区分大小写的。事实上,您只需要 记
住,只有 Windows NT 才支持 Unicode 格式,而 Windows 95 只支持 ANSI 格式就行了。至于两者的
区 别,作一般的应用程序开发是不需要了解的。
VB5 专业版在 VB 目录的 Winapi 子目录下,用几 个文件提供了关于 API 的信息。 Win32api.txt 文件中
包含了 32 位 Windows API 函数中用到的函数和类型的 结构声明以及全局常量的值。用户可以用 VB 本
身带的外 接程序"API 浏览器"来方便地使用 Win32api.Txt,如下 所示:
点击菜单文件项的"加载文本文件…"从 VB 目 录下的 WINAPI 目录中选择"WIN32API.TXT",就可以 查
看 WINDOWS 95 系统的 API 函数的声明、常数定义和 数据类型了。例如,我们打算查看函数
InverRect() 的声明。首先,点击"搜索"按钮,输入字符串 "InverRect"。在"可选项"栏中,兰色的亮度
条将移 动到"InverRect"项上。再点按"添加"按钮,在"选 定项"中就出现"InverRect"在 Visual Basic
中的 声明了。接下来自然是点按"复制"按钮,然后将窗 口切换到 Visual Basic 开发环境中,在需要声明
API 函数的地方 Ctrl+V(粘贴)即可。
上面所讲的声明方法虽然简单,但只有使用 WIN DOWS 本身的 API 函数才能这样。对于第三方提供的动
态链接库(DLL)您只有用键盘老老实实地敲了。
第二节:牛刀小试
现在读者一定很想自己亲自试一下,下面举两个 实际应用的例子让大家体会一下 API 的妙用吧!
1.使一个窗体始终保持在屏幕的最上面