使用熱鍵
兩種方法:
(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釋放熱鍵資源