控制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

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