VFP中对WIN32 API函数的调用格式
来源:FOXPRO网络工作室 作者:Major 出处:综艺读书 2005-12-02·深入浅出Win32多线程程序设计之综合实例
·generic host process for win32 service
·深入浅出Win32多线程程序设计之线程控制
·深入浅出Win32多线程程序设计之线程通信
·利用Win32API开发串行通信程序
·WIN32用户界面设计基础之Icon 篇
·深入浅出Win32多线程设计之MFC的多线程
·网络监听Dsniff for win32
·深入浅出VC++串口编程之基于Win32 API
·巧用Win32 API函数增强VB位操作功能
≡诶肰FP编程时,经常会用到WIN32API函数来对VFP的功能进行扩展,例如对注册表进行操作、获取系统信息等,但是由于WIN32API函数遵循的是C++的数据结构,在应用时与VFP的数据格式有所区别,因此在调用时容易产生问题,现将有关调用方式详解如下:·generic host process for win32 service
·深入浅出Win32多线程程序设计之线程控制
·深入浅出Win32多线程程序设计之线程通信
·利用Win32API开发串行通信程序
·WIN32用户界面设计基础之Icon 篇
·深入浅出Win32多线程设计之MFC的多线程
·网络监听Dsniff for win32
·深入浅出VC++串口编程之基于Win32 API
·巧用Win32 API函数增强VB位操作功能
VFP中调用WIN32API的主要函数是: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 位浮点数 |
| 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 位浮点数 |
| 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 可从内存中删除注册函数。
实际应用中的几点体会:
1、在API函数的参数中表明是“//address of”的,相当于在C++的指针地址,在注册时,一定要参数 类型后、在调用函数相应变量前面包含 @,以表明是按引用传递一个参数。
2、对于API函数的参数中类型为LPCTSTR和LPTSTR的函数,在注册时要定义为String类型,其他类型一般均可定义为Integer类型。
3、对于API函数的参数为一个“结构”的话,可定义为一足够大的空格字符串变量,在通过加@按引用来传递这一参数。
进入讨论组讨论。
相关图文阅读
频道图文推荐
相关专题
最新技术文档
·用FoxWeb在网上快速发布你的FOXPRO数据库 11-03
·用Foxpro制作Windows输入法码表 11-03
·用FoxPro生成HTML文件 11-03
·下载和上载远程视图数据 10-30
·为Visual FoxPro应用程序增加文件压缩功能 10-30
·为VFP添加循环微调控件类 10-30
·为FoxPro中的弹出式菜单增加自学习功能 10-30
·通过编程运行拨号网络连接 10-29
·谈谈在基于Foxpro的MIS中实现提示、帮助与询问 10-29
·谈谈VFP和SQL SERVER搭配做C/S系统 10-29
·用Foxpro制作Windows输入法码表 11-03
·用FoxPro生成HTML文件 11-03
·下载和上载远程视图数据 10-30
·为Visual FoxPro应用程序增加文件压缩功能 10-30
·为VFP添加循环微调控件类 10-30
·为FoxPro中的弹出式菜单增加自学习功能 10-30
·通过编程运行拨号网络连接 10-29
·谈谈在基于Foxpro的MIS中实现提示、帮助与询问 10-29
·谈谈VFP和SQL SERVER搭配做C/S系统 10-29
站内各频道最新更新文档
站内最新制作专题
|
|||
| ·ACDSEE专题教程-下载使用 ·迅雷专题教程-下载使用 ·Windows XP频道 ·Windows Vista频道 ·Windows 2000频道 ·win2003频道 ·Freebsd频道 ·Oracle频道 |
·Linux频道 ·Windows频道 ·邮件服务器专题 ·协议大全 ·数据恢复指南教程 ·FreeBSD使用教程 ·Linux数据库宝典 ·Linux基础知识 |
||
热门关键字导读
站内频道文章精选
| · 秘密:Vista隐蔽的动态屏保 · 腾讯开发新电子宠物--QQ熊 · 惠普否认2999元PC有价无货 |
· 驱逐Win系统“流氓”文件 · WinXP中获取未使用的IP地址 · 尝试format C:格式化硬盘? |
| · 在DOS下恢复回收站中的文件 · 拯救WinXP崩溃的救命稻草 · Linux系统中超级权限的应用 |
· 搜狗PK谷歌:谁能代言拼... · 昨日重现,一键GHOST轻松.. · 实现Web迅雷在空闲时杀毒 |
| · AVIFile函数制做AVI文件 · VC中链接动态链接库的方法 · 熊猫烧香核心源码(Delphi) |
· DateDiff函数祥解 · JavaScript去除空格的三种 · js效果 图片加载进度实时.. |
| · SQL Server数据库优化方案 · Oracle的初学者入门心得 · JSP连接Mysql数据库 |
· Photoshop为美女做艺术处理 · 用Freehand创建发光字特效 · 设计自己的个性QQ动态表情 |
百度推荐,商机无限
搜索您感兴趣的内容




