控制pb鼠标的移动

控制pb鼠标的移动 

傅胜 

  powerbuilder为程序员提供了改变鼠标形状的方法,却没有提供控制鼠标移动位置的方法。其实在windows 95系统中,已经为程序员提供了控制鼠标位置的方法,利用user32.dll动态链接库中的setcursorpos()函数就可以灵活控制鼠标的位置。

  要在powerbuilder中调用外部函数,必须先声明它。有两种类型的外部函数:全局外部函数和局部外部函数。全局外部函数可以在应用程序的任何地方声明使用,它们在应用程序中与其他全局变量一起保存。局部外部函数可以为窗口、菜单、用户对象定义,它们是对象定义的一部分。

  定义外部函数的语法如下所示:

  {access} function returndatatype name({ref}{datatype]arg],…

  datatypen argn}] library libname

  参数 描述

  access (只有在定义局部外部函数时使用)

   可定义为public, protected 或者

   private。缺省情况为public。

  returndatatype 函数的返回类型。

  name 函数名。

  datatype1 到 参数类型。

   datatypen 如果是传值,可直接将参数写上。

   如果是传参数,要在参数类型前加

   上一个关键字ref。

  arg1 到 参数名。

   argn

  libname 动态链接库名。

  在powerbuilder 的主菜单上选取“declare”的菜单项,然后选择子菜单项“global external function”,在定义全局外部函数对话框中,输入:

  function long setcursorpos(long x,long y) library 〃user32.dll〃

  注意:对于关键字“setcursorpos”中的大小写字母必须严格区分。这样,程序员就可以在应用程序的任何位置使用该函数了。

  当然,我们还可做更复杂的控制。例如要使用户在单行编辑器中输入完后,鼠标定位到“ok”按钮上,则在单行编辑器的losefocus事件中输入:

  long x1,y1

  x1=(w_genapp_about.x+cb_ok.x+cb_ok.width/2)

  x1=unitstopixels(x1, xunitstopixels!) //获取“ok”按钮的x座标;

  y1=(w_genapp_about.y+cb_ok.y+cb_ok.height/2+100)

  y1=unitstopixels(y1, yunitstopixels!) //获取“ok”按钮的y座标;

  setcursorpos(x1,y1) 

  如果要使鼠标从座标(100,200)移到座标(500,200),并产生动画效果,则编程如下:

  long i,j

  for i=100 to 500

   setcursorpos(i,200)

   for j=1 to 999 //起延时作用,可根据实际情况调整;

   next

  next

  灵活地控制鼠标位置,能使程序更加有趣,对用户也更友好。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章