PB调用API函数技巧三则

Author: 林志航 Date: 2001年 48期

?牐犜赑owerBuilder 7.0(以下简称为PB 7.0)编程中,我们经常会遇到一些PB 7.0本身不能直接解决的问题,例如:使PB7.0窗口总在最上层;在PB7.0中如何获得当前目录;在PB7.0中实现Windows任务栏的显示或者隐藏。这就需要通过调用Win32 API函数来解决了,开发者使用外部函数之前,必须先对其进行定义,外部函数定义的语法如下:
  ?牐爗Access_Level}FUNCTION ReturnDataType FunctionName({REF}{DataType1 Arg1,…,DataTypeN ArgN})LIBRARY LibraryName
  ?牐犚陨细鞲霾问暮澹篈ccess:访问级别,可以是Pubilc、Private、Protected,缺省为Public;ReturnDataType:返回数据类型;FunctionName:函数名,存储在DLL中的函数名;REF:变量通过引用方式传递;DataType:参数的数据类型;Arg:参数名;LibraryName:动态链接库名。
  ?牐牸记?1:使窗口总在最上层
  ?牐燜unction Long SetWindowPos(Long hwnd,Long ord,Long x,Long y,Long dx,Long dy,Long uflag)Library“user32”
  ?牐犜谏暇浯胫校问?1为要顶层显示的窗口句柄,参数2为指定显示的层次,参数3、4、5、6为窗口的位置和大小,参数7为附加的选项。在窗口的OPEN事件中加入函数调用:
  ?牐燬etWindowPos(Handle(This),-1,0,0,0,0,3)??
  ?牐牬司渲校问?2取-1表示在最顶层显示窗口,参数7取3表示窗口的大小和位置均保持不变。
  ?牐牸记?2:如何获得当前目录
  ?牐燜unction Ulong GetCurrentDirectoryA(Ulong buflen,ref string dir) Library “kernel32.dll”
  ?牐牪问?1用来指定字符缓冲区的长度,参数2为接收当前目录的字符缓冲区,ref表示地址引用。其调用过程为:
  ?牐燬tring curdir //定义字符串
  ?牐燾urdir=Space(256)//为字符缓冲区开辟内存空间
  ?牐燝etCurrentDirectoryA(256,curdir)
  ?牐燤essagebox(“Current Directory”,curdir)
  ?牐牸记?3:实现Windows任务栏的显示或者隐藏??
  ?牐燜unction long FindWindowEx(long ph,long ch,ref string cnref,string wn)Library “mpr.dll”
  ?牐犎挝窭甘且桓鎏厥獾拇翱冢翱诶嘈臀猄hellTrayWnd,得到它的窗口句柄,只能用FindWindowEx函数来取得:
  ?牐燜unction long ShowWindow(Long hWnd,Long nCmdShow) Library “user32”
  ?牐犛肧howWindow来显示或隐藏窗口,其第二个参数为0表示隐藏,为5表示显示:
  ?牐爃andle=FindWindowEx?煟?0,0,“Shell-TrayWnd”,wn) //wn为空串
  ?牐燬howWindow(handle,0) //隐藏任务栏
  ?牐犚陨霞记芍皇荘B 7.0中调用API函数的一些小小例子,希望能给你带来一点帮助。