VFP 帮助中的FLL资料_第1页
VFP 帮助中的FLL资料_第2页
VFP 帮助中的FLL资料_第3页
VFP 帮助中的FLL资料_第4页
VFP 帮助中的FLL资料_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

首先,将参数传递给Visual FoxPro API函数1其次,如何从ActiveX控件和FLL库返回2三、外部库的参数4四、创建Visual FoxPro动态链接库8五、访问Visual FoxPro变量和字段10第六,使用Visual FoxPro API管理内存11七、内存管理方法12八、FoxInfo结构13首先,将参数传递给Visual FoxPro API函数Visual FoxPro API常式经常需要特定Visual FoxPro资料结构的参数。以下部分提供了Visual FoxPro数据类型和其他数据结构的列表。有关实际类型定义和结构定义,请参阅Pro_ext.h文件。Visual FoxPro API数据类型以下数据类型可用于Visual FoxPro API例程:数据类型说明EDLINE在“编辑”窗口中打开的文件的行号。第一行是1。艾德埃德波斯在“编辑”窗口中打开的文件中文字的偏移位置。在此文件或注释文件中,第一个字符的偏移位置为0。FCHAN文件通道。使用Visual FoxPro或_FCreate()和_FOpen()通过API打开的每个文件都指定了FCHAN。FPFI返回整数值函数的32位指针。ITEMID指定给菜单中各个命令的唯一标识符。MENUID指定给菜单的唯一标识符。MHANDLE使用Visual FoxPro或_ allocmhand()为通过API分配的每个内存块授予唯一标识符。_HandToPtr()取消指针的引用。NTI指定表格索引的名称。每个变量和表字段名称都有相应表中的条目。w把手窗句柄。使用Visual FoxPro或_WOpen()通过API分配的唯一标识符打开窗口。注意:Pro_ext.h的#define语句用空值复盖FAR、_far和_far,因为FAR指针对32位编译器无效。Visual FoxPro API数据结构下表列出了Visual FoxPro API库使用的主要数据结构。结构说明事件rec用于说明系统在给定时间执行哪些操作的结构。FoxInfo用于FLL库中的Visual FoxPro和程序之间的通信。不适用于ocx文件。FoxTable用于FLL库中的Visual FoxPro和程序之间的通信。不适用于ocx文件。定位器用于访问参数值(FLL)或Visual FoxPro变量或字段(FLL和ocx)的结构。ParamBlk用于FLL库中的Visual FoxPro和程序之间的通信。不适用于ocx文件。Parameter用于FLL库中的Visual FoxPro和程序之间的通信。不适用于ocx文件。积分定义屏幕上单个点的水平和垂直坐标的结构。按行和列指定坐标。Rect定义屏幕上矩形坐标的结构。矩形的左上坐标由(top,left)定义,右下坐标由(bottom-1,right-1)定义。按行和列指定坐标。值用于访问参数值(FLL)或Visual FoxPro变量或字段(FLL和OCX)的结构。其次,如何从ActiveX控件和FLL库返回值您可以将值从ActiveX控件或Visual FoxPro动态链接库(FLL)返回到Visual FoxPro。要将值从ActiveX控件返回到Visual FoxPro,请执行以下操作此控件使用RETURN语句并传递单个值。以下示例使用RETURN语句返回存储在VERSION中的版本号:复制代码#define VERSION 101/其他代码长cpy ctrl :3360 getversion()/变量在fVersion中设置版本号Return VERSIONFLL库中的返回值从FLL库返回值时,请使用API函数,而不是c或c本身的命令。注意:ActiveX控件(.ocx)文件中返回值时,请使用RETURN语句,而不是使用API函数从FLL库返回值。要从FLL库中返回值使用下表中列出的API函数。以下API函数只能用于FLL库:函数说明_RetChar(char *string)设置函数的返回值以NULL结尾的字符串。_RetCurrency(CCY cval,int width)将函数返回值设置为货币值。_RetDateStr(char *string)将函数返回值设置为日期。此日期以mm/dd/yyyy格式指定。_RetDateTimeStr(char *string)将函数返回值设置为以mm/dd/yyyy hh:mm:ss格式指定的日期和时间。_ retfloat (double FLT,int width,int dec)将函数返回值设置为浮点值。_RetInt(长ival,int width)将函数返回值设置为数值。_RetLogical(int flag)将函数返回值设置为逻辑值。0被视为FALSE。任何非零值均假定为TRUE。_RetVal(Value *val)传递返回除注释类型之外的所有visual FoxPro数据类型的完整Visual FoxPro值结构。包含内置空字符的字符串或。空。要返回值,必须调用_RetVal()。注意:要返回对象数据类型的值,请使用_RetVal()函数填充Value结构的ev_object字段。在以下示例中,Sum接收对表中数字字段的引用,使用_RetFloat返回此字段值的总和:复制代码#includeSum(ParamBlk *parm)/声明变量Double tot=0,rec _ cntInt I=0,work area=-1;/-1是当前工作空间Value val/GO TOP到标头_ db rewind(工作区);获取/Get RECCOUNT()记录数rec _ CNT=_ DBRecCount(work area);/循环遍历表for(I=0);I rec _ cntI)/将字段值放置在Value结构中_Load(parm-p0)。loc、val);/将此值添加到累积总计Tot=val.ev _ real/SKIP 1跳至工作区中的下一个记录_DBSkip(workarea,1);/将总数值返回到Visual FoxPro_RetFloat(tot,10,4);/Sum函数获取引用参数FoxInfo myFoxInfo=SUM ,SUM,1, RFoxTable _FoxTable=(foxtable *) 0、size of(myfoxinfo)/size of(fox info)、myfoxinfo假设名为amount的数字字段当前处于打开状态,可以在Visual FoxPro程序的以下代码行中调用:复制代码-嗯?SUM(amount)三、外部库的参数Visual FoxPro调用ActiveX控件、COM对象或Visual FoxPro动态链接库(FLL)时,可以传递参数。例如,ActiveX控件可以在调用其方法之一时接收参数。同样,Visual FoxPro程序调用FLL库中的函数并传递参数。Visual FoxPro可以通过值或通过参照将参数传递到外部库。默认情况下,它遵循SET UDFPARMS命令的设置。但是,其它变量和表达式(如数组或字段)通过值传递。有关更改传递参数的默认方法的详细信息,请参阅将数据传递给参数。ActiveX控件和COM对象是标准的Windows程序,因此将参数从Visual FoxPro传递到ActiveX控件或COM对象不需要特殊的机制。您可以编写库代码,就像从任何c或c程序接收到参数一样。但是,FLL库中的函数使用FoxInfo结构从Visual FoxPro中获取数据。FoxInfo结构列出了库函数及其预期的参数的数量和类型。例如,以下FoxInfo结构属于一个库,该库具有名为dates的内部,并具有接收一个基于字符的参数的函数:复制代码FoxInfo myFoxInfo=“DATES”,(FPFI) dates,1,“C”在外部库中定义的函数实际上只接受一个参数:指向参数块的指针。在ParamBlk结构中定义的此参数块存储Visual FoxPro函数调用传递的所有参数信息。下列程式码会显示函数宣告必须遵循的格式:复制代码void function _ name(param blk * parm)例如,dates的函数定义如下:复制代码Void dates(ParamBlk *parm)ParamBlk结构由表示参数数的整数组成,后跟参数组合的数组。此结构定义包含在Pro_ext.h中。复制代码/*库函数的参数列表。*/Typedef structShort int pCount/*传递的参数数*/parameter p1;/* pCount参数*/ ParamBlkParamBlk结构中包含的Parameter typedef是Value结构和Locator结构的组合。通过值调用被视为Value结构。通过引用进行的调用由Locator结构处理。在Visual FoxPro中调用函数时,可以使用这些结构接收传递给函数的参数。从Pro_ext.h文件中提取的以下信息显示了Parameter类型的定义:复制代码/*到库函数的参数。*/Typedef unionValue valLocator loc Parameter定义值结构通过值向函数传递参数时,使用Value结构接收参数。从Pro_ext.h文件中提取以下Value结构定义:复制代码/expressions value。Typedef structChar ev _ typeChar ev _ paddingShort ev _ widthUnsigned ev _ lengthLong ev _ longDouble ev _ realCCY ev _ currencyMHANDLE ev _ handleULONG ev _ object Value值域下表是针对不同数据类型在Value结构中传递和接收值的准则。只有为数据类型列出的域才能用于该数据类型。不同数据类型的Value结构内容数据类型域值文字型Ev_typecEv_length绳子长度Ev_handle到字符串MHANDLE数字类型Ev_typenEv_width显示宽度Ev_length小数位数Ev_real双精度整数(Integer)Ev_typeIEv_width显示宽度Ev_long“长整数”(Long integer)日期格式Ev_typedEv_real日期1日期时间(Date Time)Ev_typetEv_real日期(秒/86400.0)货币型Ev_typeyEv_width显示宽度Ev_currency货币值2逻辑型Ev_typelEv_length0或1注释类型Ev_typemEv_wdithFCHANEv_long注释字段长度Ev_real注释字段偏移一般(General)Ev_typegEv_wdithFCHANEv_long一般栏位长度Ev_rea

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论