(2)常见的API参数类型的说明
API函数的参数中最常见的是长整Long型数据类型,例如API中的句柄、一些特定的常量、函数的返回值都是此类型 的值;另外几种常见的参数类型有:整型Integer、Byte型、String型等。
(3)声明中的ByVal是作什么用的
这跟VB的参数传递方式有关,在默认情况下VB是通过地址传递方式传递函数的参数、而有些API函数要求必须采用传值方式来传递函数参数(这两种参数传递方式是不同的,前者传递的是一个指针,而后者要求是参数真实的值)。这样就会发生错误,解决的办法是在API函数参数声明的前面加上ByVal关键字,这样VB就采用传值方式传递参数了。
(4)怎样得到完整的API函数声明
VB自带了API文本查看器API TEXT VIEWER,我们可以在其中找到API函数的完整声明,然后把它粘贴到程序中即可。
实际上,在DELPHI中调用WIN32 API函数与在C或C++中调用WIN32 API函数没有大的区别。DELPHI中将C或C++中引用 的WINDOWS.H头文件改写为WINDOWS.PAS单元,使WINDOWS API函数的定义符合PASCAL语法。而其他的头文件在DELPHI中也都有相应的.PAS单元一一对应,所以在DELPHI中调用API函数时,只须将相应的API函数单元加入到USES语句的单元之中,便可直接调用相应的函数了。
下面我们来看一个简单的例子,程序的作用是改变桌面墙纸:
unit Unit1;
interface
{Windows.PAS是DELPHI提供的标准单元,我们要调用API函数,需要引用这个单元}
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type
TForm1 = class(TForm);
Button1: TButton;
procedure Button1Click(Sender: TObject);
private { Private declarations }
public { Public declarations }
end;
var Form1: TForm1;
implementation {$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var filename1:string;
begin
filename1:='c:\windows\mywallpaper.bmp';
{调用API函数SystemParametersInfo来设置桌面墙纸的图片文件为'c:\windows\mywallpaper.bmp'}
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0,pchar(filename1), SPIF_UPDATEINIFILE);
end;
end.
其中SystemParametersInfo函数的参数的意义如下表:
| 参数: |
意义 |
| uAction |
Longint,指定要设置的参数。参考uAction常数表 |
| uParam |
Longint,参考uAction常数表 |
| lpvParam |
不定,按引用调用的Integer、Longint和数据结构。 |
| fuWinIni |
参数规定了在设置系统参数的时候,是否应更新用户设置参数 常数SPIF_UPDATEINIFILE表示更新 |
下面是本例的uAction常数,和使用它的方法:
|
参数 |
意义和使用方法 |
|
SPI_SETDESKWALLPAPER |
设置桌面背景墙纸,用法为: SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, 图片路径, 1) |
好了在DELPHI中调用API函数就是这样简单,我们需要知道的只是API函数的意义和参数列表,然后把它用到程序中就可以了。需要提醒的是C的数据类型可能会与DELPHI的数据类型有些不同,而调用API函数时必须保证类型一致才行,这是我们必须注意的一点。
今天我们把标准WIN32 API函数分类介绍一下,虽然我们不必去刻意研究每个API函数的用法,但是在需要的时候,至少应该知道它属于哪一类的API函数,这样才能正确查找和使用。
按照通常的划分标准,WIN32 API函数分为七大类:
1、窗口管理类:这类API函数向应用程序提供了一些创建和管理用户界面的方法,我们可以使用它们来做出程序的界面。
2、窗口通用控制类:系统SHELL提供了一些控制,使用这些控制可以使窗口具有与众不同的外观,通用控制是由通用控制库COMCTL32.DLL提供的。
3、SHELL特性类:应用程序可以使用它们来增强系统SHELL各方面的功能。
4、图形设备接口(GDI):提供绘图、图形处理、使用显示设备等一系列的API函数。
5、系统服务类:为计算机提供了访问计算机资源以及底层操作的手段。
6、国际特性类:有助于我们编写国际化的应用程序,提供Unicode字符集和多语种支持。
7、网络服务类:允许网络上的不同计算机之间的不同应用程序之间进行通讯,用于在各计算机上创建和管理共享资源的连接。
上面的分类对于我们来说还是显得宽泛了一些,所以本节以后的各节会采用小分类的方法,也就是按具体功能的划分为大家介绍一些常用的API函数的用法。