PowerBuilder程序设计教程 第14章教案新.ppt
文本预览下载声明
第14章 PowerBuilder高级应用 在PowerScript语言中可以使用操作系统固有的函数和用户自己开发的函数,这个过程就是API(Application Programming Interface)。使用外部函数可以极大地提高应用系统性能,这也是PowerBuilder开放性的体现。 通常认为,PowerBuilder提供的函数为内部函数,通过API调用的函数为外部函数。外部函数是以动态链接库(.DLL文件)形式提供的。使用API主要包括:外部函数定义和调用、数据类型转换、参数传递。 14.1 应用程序接口(API) 根据外部函数的作用范围,外部函数可以分为两种类型:全局外部函数和局部外部函数。全局外部函数可在应用、窗口、菜单、用户对象等位置定义,并能在应用程序的任何脚本中调用。局部外部函数可在窗口、菜单、用户对象中定义,并成为对象的一部分,只能在对象内部调用,其封装性好。 根据有、无返回值,PowerBuilder又将外部函数分为两种类型:FUNCTION(函数)和SUBROUTINE(子程序),其区别是函数有返回值,子程序无返回值。 14.1 应用程序接口(API) FUNCTION的定义格式如下: {access} FUNCTION returndatatype name ( {{REF} datatypel argl,…,{REF} datatypen argn} ) LIBRARY libname ALLAS FOR extname SUBROUTINE的定义格式如下: {access} SUBROUTINE name ( {{REF} datatypel argl, …,{REF} datatypen argn} ) LIBRARY libname ALIAS FOR extname“ 其中: access为局部函数访问级别,分以下三级: ·Public:(缺省)在应用程序的任何脚本中使用; ·Private:只在该函数所在对象事件脚本中使用; ·Protected:只在该函数所在对象及其后代事件脚本中使用。 Returndatatype:为函数返回类型,此类型应与PowerScript类型匹配。 Name: 为外部函数在DLL中的函数名。 REF: 为变量通过引用方式传递。 Datatype: 为外部函数中参数类型。 Argl, …,Argn: 为外部函数中的参数名。 14.1 应用程序接口(API) Libname: 为包含外部函数的DLL或EXE文件名 Extname: 为函数别名。 外部函数可以通过在Script画板左边下拉列表框中选择Declare,在右边下拉列表框中选择 Global External Function或Local External Function来定义 外部函数的调用方法与内部函数的调用方法一致,全局外部函数在整个应用中有效,可以在任何位置调用;调用局部外部函数时,需在局部函数名前加对象名,格式如下:ObjectName.ExternalFunction(Arguments) 14.1.2 数据类型转换 PowerBuilder与C语言的数据类型并不是一一对应的,表14-1列出主要数据类型的对应关系。此外,外部函数参数指针必须使用FAR。 PowerBuilder与C语言数据类型对应关系 : PowerBuilder数据类型 C数据类型 Boolean BOOL Long LONG Uint WORD, HANDLE, UNSIGNED INT Char BYTE,CHAR String LPINT, LPWORD, LPLONG, LPDWORD 14.1.3 参数传递 参数传递有三种方式:引用方式传递数值;引用方式传递指针;向外部函数传递结构。 1. 引用方式传递数值 例如: FUNCTION Boolean increase (REF int valuel, int value2) Library “MyDLL.DLL” 其中,valuel为引用传递,value2为值传递。 2. 引用方式传递指针 例如:FUNCTION int ASCIItoHEX(REF string mystring) Library “MyDLL.DLL” 外部函数原形为: int ASCIItoHEX(FAR *mystring) 3. 向外部函数传递结构 使用结构进行参数传递时,应在PowerBuilder中定义与外部函数一致的结构,其他与传递指针方式相同。 14.1.4 外部函数举例 文件拷贝是Windows应用常见的操作,但在PowerBuilder中并没有文件拷贝函数,只能通过调用 Windows API实现。 1. 新建如下图所
显示全部