DECLARE – DLL 命令

示例 请参阅

注册外部 Windows 32 位动态链接库 ( .DLL ) 中的一个函数。

语法

DECLARE [cFunctionType] FunctionName IN LibraryName [AS AliasName]
[cParamType1 [@] ParamName1,
cParamType2 [@] ParamName2, ...]

参数

cFunctionType

表明 32 位 Windows .DLL 函数是否有返回值。如果函数有返回值,则包含 cFunctionType ,否则省略 cFunctionType。
cFunctionType 可以是以下值:

cFunctionType  说明
SHORT 16 位整数
INTEGER 32 位整数
SINGLE 32 位浮点数
DOUBLE 64 位浮点数
LONG 32 位长整数
STRING 字符串

FunctionName

指定在 Visual FoxPro 中要注册的 32 位 Windows .DLL 函数名。注意 FunctionName 区分大小写。
32 位 Windows .DLL 函数名可以与 Win32 API 手册中规定的不同。例如,Messagebox 函数应该命名为 MessogeBoxA(对于单字节字符)和 MessageBoxW(对于 UNICODE)。如果 Visual FoxPro 不能定位 FunctionName 指定的 32 位 Windows .DLL 函数,则将字母 A 追加到函数名尾部,Visual FoxPro 用新的函数名重新搜索。
如果指定的 32 位 Windows .DLL 函数与一个 Visual FoxPro 函数同名,或者函数名不是合法的 Visual FoxPro 函数名,则将 32 位 Windows .DLL 函数名作为 FunctionName,并用 AS 子句给该函数取一个合法的 Visual FoxPro 名,这点在本主题的后面将要说明。

IN LibraryName 

指定外部 Windows .DLL 的名称,该动态链接库包含 FunctionName 指定的 Windows 32 位 .DLL 函数。如果为 LibraryName 指定 WIN32API,则 Visual FoxPro 就在 KERNEL32.DLL、GDI32.DLL、USER32.DLL、MPR.DLL 和 ADVAPI32.DLL 中搜索 32 位 Windows .DLL 函数。

AS AliasName

为一个与 Visual FoxPro 函数同名或不合法的 Windows 32 位 .DLL 函数名指定别名。AliasName 不能是 Visual FoxPro 的保留字或已经由 Visual FoxPro 注册的 Windows 32 位 .DLL 函数名。
可使用 AliasName 去调用 Windows 32 位 .DLL 函数。AliasName 不区分大小写。

cParameterType1 [@] ParamName1, cParameterType2 [@] ParamName2, ...

指定传递给 Windows 32 位 .DLL 函数的参数类型。
Windows 32 位 .DLL 函数由 cParameterType 指定需要的参数类型。
cParameterType 可以为下列某一类型:

cParameterType 说明
INTEGER 32 位整数
SINGLE 32 位浮点数
DOUBLE 64 位浮点数
LONG 32 位长整数
STRING 字符串

如果参数不是 Windows 32 位 .DLL 函数所需要类型,Visual FoxPro 产生一个错误。Null 值可以作为字符串传递。
调用函数时,若按引用传递一个参数,必须在这条命令的参数 cParameterType 后面、在调用函数相应变量前面包含 @。如果在 DECLARE 中或在调用函数中没有包含 @,参数就按值传递。有关需要按引用传递参数的 .DLL 函数的详细内容,请参阅《Microsoft Win32 编程指南》。

附注
参数名 ParamName1,ParamName2 等是可选的,Visual FoxPro 或 Windows 32 位 .DLL 函数并不使用它们,它们可以作为函数接收的参数名和参数类型的提示。

说明
在从 Visual FoxPro 调用一个 32 位 Windows .DLL 函数前,必须发出带有函数名、包含该函数的 Windows .DLL 名以及函数将要接收的参数类型的 DECLARE 命令。
为了提供向后兼容性,Visual FoxPro 仍支持 FOXTOOLS.FLL(包含在 FoxPro 早期版本中),并允许调用 16 位 .DLL 函数的 Visual FoxPro API 库。在 Visual FoxPro 中,调用 .DLL 函数时使用 DECLARE 是可取的方法。
有关 Windows 32 位 .DLL 函数的详细内容,请参阅《Microsoft Win32 编程指南》中的文档。

执行 DISPLAY STATUS 或 LIST STATUS 可以显示注册函数的名称,执行 CLEAR ALL 或 CLEAR DLLS 可从内存中删除注册函数。