首先,通過MFC的應用程序向導生成一個基於對話框的應用程序。
然後,在對話框類的OnInitDialog成員函數中注冊熱鍵。
::RegisterHotKey(m_hWnd, 001, MOD_ALT, VK_ESCAPE);
::全局作用符;
m_hwnd對話框句柄;
001熱鍵ID,這是一個整型值,可以隨便定義,也可以通過宏定義;
MOD_ALT表示通過組合鍵(ALT+VK)觸發,可選值還有MOD_SHIFT、MOD_WIN、MOD_NOREPEAT,設為NULL表示不使用組合鍵;
VK_ESCAPE是熱鍵的虛擬鍵碼,可根據需要定義。本例中使用鍵盤左上角的ESC鍵。
接著,重載PreTranslateMessage函數(注:該函數不能攔截SendMessage函數發來的消息)。
VC6.0中的具體做法是在類視圖中右鍵對話框類,選擇Add virtual Function,選中PreTranslateMessage後重載之。
最後,在函數體內敲入以下代碼,以便實現按下熱鍵後彈出消息框的功能。
switch (pMsg->message)
{
case WM_HOTKEY:
if (001 == pMsg->wParam)MessageBox("Welcome tohttp://hi.baidu.com/darks00n/");
break;
default:
break;
}
message是MSG消息結構的一個成員,代表消息類型,熱鍵的消息類型是WM_HOTKEY。
wParam為附加參數,當這個參數值等於001時就觸發我們的熱鍵,多個熱鍵就是通過該參數區分的。
OK!F5執行程序後同時按下ALT+ESC,成功彈出消息框。MFC下創建熱鍵是不是so easy?
作者 darks00n's秘密基地