VB中API函数的调用

1、API函数

      API的英文全称(Application Programming Interface),WIN32 API也就是MicrosoftWindows32位平台的应用程序编程接口,在window操作系统盛行的期间,程序员主要是利用API函数来开发Windows平台下的应用程序当时程序员必须熟记很多API函数。随着软件技术的不断发展,在Windows平台上出现了很所可视化编程环境(例如:VB,C,c++等)在这些编程环境中出现很多类和控件,他们代替了API的功能,实际上这些类和控件是封装了API函数集合。它们把常用的API函数的组合在一起成为一个控件或类库,并赋予其方便的使用方法,所以极大的加速了WINDOWS应用程序开发的过程。有了这些控件和类库,程序员便可以把主要精力放在程序整体功能的设计上,而不必过于关注技术细节。它们只提供WINDOWS的一般功能,对于比较复杂和特殊的功能来说,使用类库和控件是非常难以实现的,这时就需要采用API函数来实现。 这也是API函数使用的场合,所以我们对待API函数不必刻意研究每一个函数的用法,那也是不现实的(能用的到的API函数有几千个呢)。API不用去刻意学,只要用到的时候查看API帮助即可。


2、API函数在VB中的查看

      开始→所有程序→Microsoft Visual Basic 6.0 中文版→API文本浏览器

                                        

出现API文本浏览器对话框,然后点击文件→加载文本文件→WIN32API→选择你所需要的内容



3、API函数解析

<strong><span style="font-size:18px;"></span></strong><pre name="code" class="cpp"><strong><span style="font-size:18px;">Public Declare Function SetParent Lib "user32" Alias "SetParent" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long</span></strong>

 


Declare 语句:用于在模块级别中声明对动态链接库 (DLL) 中外部过程的引用。对此,你只要记住任何API函数声明都必须写这个语句就可以了。


Iib: 指明包含所声明过程或函数的动态链接库或代码资源。也就是说,它说明的是,函数或过程从何而来的问题。

如在上例中,SetParent Lib "user32"说明 函数 SetParent 来自 user32.dll文件。主要的dll动态连接库文件有∶

(1)user32.dll Windows管理。生成和管理应用程序的用户接口。

(2)GDI32.dll 图形设备接口。产生Windows设备的图形输出
(3)Kernel32.dll 系统服务。访问操作系统的计算机资源。


注意,当DLL文件不在Windows或System文件夹中的时候,必须在函数中说明其出处(路径)。如,SetFocus Lib "c:\Mydll\user32"函数声明中的Alias 是可选的。表示将被调用的过程在动态链接库 (DLL) 中还有另外的名称(别名)。如,Alias "SetFocus" ,说明SetFocus函数在User32.dll中的另外一个名称是,SetFocus。怎么两个名都一样呢?当然,也可以是不同的。在很多情况下,Alias说明的函数名,即别名最后一个字符经常是字符A,如SetWindowsText函数的另一个名称是SetWindowsTextA,表示为Alias "SetWindowsTextA"。这个A只不过是设计家们的习惯的命名约定,表示函数属于ANSI版本。

别名的用途:从理论上讲,别名提供了用另一个名字调用API的函数方法。如果你指明了别名,那么 尽管我们按Declare语句后面的函数来调用该函数,但在函数的实际调用上是以别名作为首要选择的。如,以下两个函数(Function,ABCD)声明都是有效的,他们调用的是同一个 SetFocus函数∶

Declare Function SetFocus Lib "user32" "SetFocus" (ByVal hwnd As Long) As Long
Declare ABCD SetFocus Lib "user32" Alias "SetFocus" (ByVal hwnd As Long) As Long

需要注意的是,选用Alias的时候,应注意别名的大小写;如果不选用Alias 时的时候,函数名必须注意大小写,而且不能改动。当然,在很多情况下,由于函数声明是直接从API文本游览器中拷贝过来的,所以这种错误的发生机会是很少的,但您有必要知道这一点。

byval的作用:这跟VB的参数传递方式有关,在默认情况下VB是通过地址传递方式传递函数的参数、而有些API函数要求必须采用传值方式来传递函数参数(这两种参数传递方式是不同的,前者传递的是一个指针,而后者要求是参数真实的值)。这样就会发生错误,解决的办法是在API函数参数声明的前面加上ByVal关键字,这样VB就采用传值方式传递参数了。


最后提醒一句,API声明(包括结构、常数)必须放在窗体或模块的"通用(General Declarations)段。





      

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值