微信公众号 
图码生活

每天发布有五花八门的文章,各种有趣的知识等,期待您的订阅与参与
电脑报 1992-2001 十年文章全集
电脑报 1992-2001 十年文章全集
包含从 1992 年 - 2001 年间,两万余篇期刊文章,查询最少输入两个字符
随便看看
读取中
读取中
标题PB调用API函数技巧三则
栏目软件世界
作者林志航
发布2001年48期
  在PowerBuilder 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
  以上各个参数的含义:Access:访问级别,可以是Pubilc、Private、Protected,缺省为Public;ReturnDataType:返回数据类型;FunctionName:函数名,存储在DLL中的函数名;REF:变量通过引用方式传递;DataType:参数的数据类型;Arg:参数名;LibraryName:动态链接库名。
  技巧1:使窗口总在最上层
  Function 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事件中加入函数调用:
  SetWindowPos(Handle(This),-1,0,0,0,0,3)
  此句中,参数2取-1表示在最顶层显示窗口,参数7取3表示窗口的大小和位置均保持不变。
  技巧2:如何获得当前目录
  Function Ulong GetCurrentDirectoryA(Ulong buflen,ref string dir) Library “kernel32.dll”
  参数1用来指定字符缓冲区的长度,参数2为接收当前目录的字符缓冲区,ref表示地址引用。其调用过程为:
  String curdir //定义字符串
  curdir=Space(256)//为字符缓冲区开辟内存空间
  GetCurrentDirectoryA(256,curdir)
  Messagebox(“Current Directory”,curdir)
  技巧3:实现Windows任务栏的显示或者隐藏
  Function long FindWindowEx(long ph,long ch,ref string cnref,string wn)Library “mpr.dll”
  任务栏是一个特殊的窗口,窗口类型为ShellTrayWnd,得到它的窗口句柄,只能用FindWindowEx函数来取得:
  Function long ShowWindow(Long hWnd,Long nCmdShow) Library “user32”
  用ShowWindow来显示或隐藏窗口,其第二个参数为0表示隐藏,为5表示显示:
  handle=FindWindowEx(0,0,“Shell-TrayWnd”,wn) //wn为空串
  ShowWindow(handle,0) //隐藏任务栏
  以上技巧只是PB 7.0中调用API函数的一些小小例子,希望能给你带来一点帮助。