VB中声明和使用API函数
一、VB中API函数的声明方式有两种:如果我们只在某个表单中使用API函数,可以在表单代码的通用部分声明:
声明的语法是:
私有声明函数...
私有声明Sub.....
这里必须采用私有声明,因为这个API函数只能被一个窗体中的程序调用。
如果我们的程序由多个窗体组成,需要在多个窗体中使用同一个API函数,就需要在模块中声明。
先添加一个模块(如图),
然后用以下语法声明它:
公共声明函数....
公共声明Sub....
公共声明的含义是将API函数视为一个公共函数或过程,在项目中的任何地方(包括所有的窗体和模块)都可以直接调用。声明之后,我们就可以在程序中使用这个API函数了。
二、API函数可以通过以下方式使用,以SetWindowPos函数为例:
(1)忽略函数返回值的调用:
SetWindowPos Form1.hWnd,-2,0,0,0,0,3
请注意,函数的参数没有括号。
(2)调用方法调用:
调用SetWindowPos(Form1.hWnd,-2,0,0,0,3)
注意这里需要括号,但是我们不检索函数的返回值。
(3)调用获取返回值的函数:
myling = SetWindowPos(form 1 . hwnd,-2,0,0,0,3)
这时候就需要加括号了,我们必须事先定义一个变量(变量的类型和函数返回值的类型相同)来存储API函数的返回值。
三。几个问题的解释:
(1)声明中的Lib和Alias怎么办?
一般情况下,WINDOWS系统或其他公司提供的DLL中总是包含WIN32API函数,并使用Declare语句中的Lib关键字来指定DLL(动态连接库)文件的路径,这样VB就可以找到DLL文件,然后使用API函数。如果我们只是列出DLL文件名而没有指出它的完整路径,VB将自动在。EXE文件所在位置,当前工作目录,WINDOWS\SYSTEM目录和WINDOWS目录。因此,如果要使用的DLL文件不在上述目录中,我们应该指出它的完整路径。
Alias用于指定API函数的别名,如果我们调用的API函数是使用字符串(参数包含字符串类型),Alias关键字是必须的。这是因为同一个API函数的名称在ANSI和Unicode字符集中可能不同。为了保证不出现声明错误,我们使用Alias关键字指出API函数的别名。一般来说,在WIN9X平台上,我们可以在API函数的名字后面加一个大写的A作为别名。
(2)常用API参数类型描述
API最常见的参数是长整型数据类型,比如API中的句柄,一些特定的常量和函数的返回值都是这种类型的值;其他常见的参数类型有整数、字节、字符串等。
(3)ByVal在语句中有什么用?
这和VB的参数传递方式有关。VB默认通过地址传递来传递函数参数,而有些API函数要求函数参数必须通过值传递来传递(这两种参数传递方式是不同的,前者传递一个指针,后者要求参数的实值)。这样会造成错误,解决的办法是在API函数参数声明前面加上ByVal关键字,这样VB就可以按值传递参数了。
(4)如何获得完整的API函数声明?
VB自带API文本查看器API文本查看器,在这里我们可以找到API函数的完整声明并粘贴到程序中。
位律师回复
0条评论