成人午夜激情影院,小视频免费在线观看,国产精品夜夜嗨,欧美日韩精品一区二区在线播放

在PB中實(shí)現(xiàn)熱鍵的方法

2010-08-28 10:47:36來源:西部e網(wǎng)作者:

     如果你能在你的應(yīng)用程序中添加一些熱鍵,就可以加快用戶的操作速度,特別是對那些熟練的操作人員,他們特別歡迎快捷鍵的操作方式。在不少大型應(yīng)用軟件中,用戶可以通過使用Ctrl+Alt+F5之類的組合鍵來方便地進(jìn)行功能切換和處理。那么,我們在用PowerBuilder開發(fā)應(yīng)用程序時(shí),怎樣在其中實(shí)現(xiàn)需要的熱鍵功能呢?下面筆者就根據(jù)自身的經(jīng)驗(yàn),介紹兩種實(shí)用的方法。

  第一種方法:

  該方法可以實(shí)現(xiàn):無論何時(shí),只要用戶按下熱鍵,都將觸發(fā)窗口中的事件。

  1.聲明 API的外部函數(shù)

  FUNCTION Integer GlobalAddAtom(ref string lpString) LIBRARY "kernel32.dll" ALIAS FOR "GlobalAddAtomA"

  FUNCTION ulong RegisterHotKey(ulong hwnd,ulong id,ulong fsModifiers,ulong vk) LIBRARY "user32.dll"

  //hwnd參數(shù)用于指定使用本熱鍵的窗口句柄,id參數(shù)用于指定一個(gè)惟一的ID,fsModifiers參數(shù)指明輔助鍵值(Alt、Ctrl、Shift等),vk參數(shù)指明虛擬鍵的ASCII碼。

  2.對常量賦初值

  Public:

  constant integer MOD-ALT = 1

  constant integer MOD-CONTROL = 2

  constant integer MOD-SHIFT = 4

  3.利用代碼在系統(tǒng)中注冊要使用的熱鍵

  //在窗口的Open事件中

  long ll-RC

  string ls-str

  ls-str = "My atom ID"

  atomid = GlobalAddAtom(ls-str) //得到惟一的ID,保證不和其他應(yīng)用程序發(fā)生沖突

  ll-RC = RegisterHotKey(Handle(this), atomid, MOD-ALT + MOD-CONTROL, 65)

  // 65為‘A’,注冊的熱鍵為Ctrl+Alt+A

  if ll-RC = 0 then

  messagebox("錯(cuò)誤","錯(cuò)誤信息")

  end if

  4.編寫按下熱鍵時(shí)的處理程序

  //在窗口的Other事件中

  IF wparam = atomid THEN

  //在這里編寫處理程序

  END IF

  第二種方法:

  1.聲明 API的外部函數(shù)

  function long SendMessageA(long lhWnd,uint uiMsg,long lwMsg,long lwParam) library ′user32.dll′

  2.對常量賦初值

  Public:

  Constant Long WM-SETHOTKEY=50//設(shè)置熱鍵信息值

  Constant Long HK-MYHOTKEY=1648 //熱鍵參數(shù)值

  Constant Long SC-HOTKEY=61776//PB中的熱鍵信息

  其中,HK-MYHOTKEY不是固定的,它根據(jù)用戶的需要而定。它的具體值的確定方法是:高8位字節(jié)與低8位字節(jié)組成16位字節(jié),然后將它換算成十進(jìn)制數(shù),即得到所需的HK-MYHOTKEY值。高8位字節(jié)值為一些輔助鍵(Control、Alt、Shift等),低8位字節(jié)為使用鍵的ASCII碼。如果我們要使用Ctrl+Alt+A作為熱鍵,則A=65,轉(zhuǎn)換成十六進(jìn)制為41,Ctrl+Alt=2+4=6,轉(zhuǎn)換成十六進(jìn)制仍然是6,兩則組合即為641,再重新轉(zhuǎn)換回十進(jìn)制得到1601;同樣,如果我們用Ctrl+Alt+F1作為熱鍵,F(xiàn)1=112,可以得到HK-MYHOTKEY值應(yīng)為1648。

  3.利用代碼告訴窗口我們的熱鍵

  //在窗口的Open事件中

  long ll-RC

  ll-RC = SendMessageA(Handle(this), WM-SETHOTKEY, HK-MYHOTKEY, 0)

  if ll-RC <> 1 then

  messagebox("錯(cuò)誤","錯(cuò)誤信息")

  end if

  4.編寫按下熱鍵時(shí)的處理程序

  //在窗口的Other事件中

  IF wparam = SC-HOTKEY THEN

  //在這里編寫處理程序

  END IF

關(guān)鍵詞:PB熱鍵方法
主站蜘蛛池模板: 赣州市| 延长县| 昌宁县| 金寨县| 泾源县| 山东| 寻甸| 灵寿县| 宕昌县| 宜州市| 若羌县| 新和县| 肇庆市| 民乐县| 柳江县| 简阳市| 磐安县| 成安县| 松原市| 连南| 从化市| 白银市| 成武县| 兴仁县| 肇东市| 庄浪县| 惠州市| 井研县| 河源市| 蓝田县| 奈曼旗| 尼勒克县| 寿宁县| 铜陵市| 惠东县| 洛川县| 邵东县| 平湖市| 紫云| 六安市| 平谷区|