精品理论电影在线_日韩视频一区二区_一本色道精品久久一区二区三区_香蕉综合视频

vc如何注冊系統熱鍵

發布時間:2011-09-16 共1頁

導讀:縱觀整個搜索引擎,這個樣的主題文章也很多,就是沒有自己親自試著寫寫,現在就為大家說說吧(個人觀點僅供參考),注冊熱鍵顧名思義就是把這個熱鍵注冊上去,怎么注冊呢?   其實人家微軟大哥早就為我準備好了一個函數,RegisterHotKey這是一個API函數(以我看這個函數就是個定時器,當遇到用戶按了預定義的按鍵,就會產生WM_HOTKEY消息,類似于時間到了該執行想要的代碼)
  函數原型如下
  BOOL RegisterHotKey(
  HWND hWnd, // handle to window
  int id,  // hot key identifier
  UINT fsModifiers,  // key-modifier options
  UINT vk // virtual-key code
  );
  說明:
  第一個參數指定接收WM_HOTKEY消息的窗體句柄
  第二個參數熱鍵標識,代表這個熱鍵的唯一ID,應用程序中的標識值在0x0000和0xbfff之間,DLL中的在0xc000和0xffff之間
  第三個參數 指的是附加按鍵的修改,比如說你按住了CTRL鍵,這里的值可以選擇MOD_ALT,MOD_CONTROL,MOD_SHIFT,MOD_WIN,MOD_KEYUP
  第四個參數指的是按鍵的虛擬碼 (這里你可以查找具體的msdn)
  上面只是一個注冊熱鍵的過,那么熱鍵注冊成功呢,當用戶按住熱鍵的時候,它就會產生WM_HOTKEY消息(也就是說時間到了,該執行代碼了),那么我們的還要處理這個消息來為自己所用,假如用戶按住熱鍵我打算讓他彈出個對話框,我們可以這樣處理這個消息,如果你用的是MFC設計軟件,那么你可以在 PreTranslateMessage(MSG* pMsg)函數中截獲WM_HOTKEY消息,代碼如下
  {
  // TODO: Add your specialized code here and/or call the base class
  switch(pMsg->message)
  {
  case WM_HOTKEY: //截獲這個消息來處理自己想要的結果
  {
  if (pMsg->wParam==(這里是你注冊時的熱鍵ID,也是唯一的))
  {
  MessageBox("Test is 成功");
  }
  break;
  }
  default:  //默認的處理
  break;
  }
  return CDialog::PreTranslateMessage(pMsg);
  }
  剩下的工作就是反注冊熱鍵(意思就是注銷這個熱鍵),在程序關閉的時候寫入下列代碼,我是在OnClose中寫的 ,你也可以在OnDestroy中寫,
  UnregisterHotKey(m_hWnd,(注冊時的ID)); //這個函數也是個API函數,第一個參數是說明你要注銷哪個窗口句柄的熱鍵,第二個參數說明是你開始注冊的唯一ID
  其實不管是你做任何事情,都要遵循一個順序,一般都是有一定的規律的,操作系統即使這樣復雜,但是里面的東西還是一點點拼湊起來的,并且每一個東西都是有一定的規律的,只要你自己能鉆研,我想沒有說明難處的。

百分百考試網 考試寶典

立即免費試用