使用MFC熱鍵

使用熱鍵

兩種方法:

(1)

直接重寫WM_HOTKEY

頭文件中:

public:

  afx_msg void OnHotKey(UINT nHotKeyId, UINT nKey1, UINT nKey2);

 

源文件中:

BEGIN_MESSAGE_MAP(CMyhotKeyDlg, CDialogEx)

ON_WM_HOTKEY()

END_MESSAGE_MAP()

 

BOOL CMyhotKeyDlg::OnInitDialog()

{

  ::RegisterHotKey(m_hWnd,199,MOD_ALT,'U');//注意要大寫,註冊的熱鍵id爲199(自己定義),Alt+U

  //::RegisterHotKey(m_hWnd,200,MOD_CONTROL,'W');熱鍵爲ctrl+W,如果爲Alt+W 就不成功,應該是系統有了吧

}

 

void CMyhotKeyDlg::OnHotKey(UINT nHotKeyId, UINT nKey1, UINT nKey2)

{

  // TODO: 在此添加消息處理程序代碼和/或調用默認值

  if(nHotKeyId == 199)

  {

     AfxMessageBox(_T("使用了熱鍵"));

     return;

  }

  CDialogEx::OnHotKey(nHotKeyId, nKey1, nKey2);

}

 

BOOL CMyhotKeyDlg::DestroyWindow()

{

  // TODO: 在此添加專用代碼和/或調用基類

  ::UnregisterHotKey(m_hWnd,199);//釋放資源

  return CDialogEx::DestroyWindow();

}

 

(2)手動添加熱鍵消息

頭文件中:

afx_msg long MyHotKey(WPARAM wParam,LPARAM lParam);

 

源文件中:

BEGIN_MESSAGE_MAP(CMyhotKeyDlg, CDialogEx)

ON_MESSAGE(WM_HOTKEY,MyHotKey)

END_MESSAGE_MAP()

 

HRESULT CMyhotKeyDlg::MyHotKey(WPARAM wParam,LPARAM lParam)

{

  if(wParam == 199)

  {

     AfxMessageBox(_T("使用了熱鍵"));

  }

  return TRUE;

  }

 

BOOL CMyhotKeyDlg::DestroyWindow()

{

  // TODO: 在此添加專用代碼和/或調用基類

  ::UnregisterHotKey(m_hWnd,199);//釋放資源

  return CDialogEx::DestroyWindow();

}

 

總結:

(1)在初始化函數中,使用RegisterHotKey函數註冊熱鍵

(2)自定義熱鍵消息或重寫熱鍵消息

(3)熱鍵函數進行熱鍵id判斷

(4)使用UnregisterHotKey釋放熱鍵資源

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章