1.通过MFC的应用程序向导生成一个基于对话框的应用程序。
2.在对话框类的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键。
3.重载PreTranslateMessage函数(注:该函数不能拦截SendMessage函数发来的消息)。
VC6.0中的具体做法是在类视图中右键对话框类,选择Add virtual Function,选中PreTranslateMessage后重载之。
4. 最后,在函数体内敲入以下代码,以便实现按下热键后弹出消息框的功能。
switch (pMsg->message)
{
case WM_HOTKEY:
if (001 == pMsg->wParam)
{
MessageBox("Test");
}
break;
default:
break;
}
message是MSG消息结构的一个成员,代表消息类型,热键的消息类型是WM_HOTKEY。
wParam为附加参数,当这个参数值等于001时就触发我们的热键,多个热键就是通过该参数区分的。
OK!F5执行程序后同时按下ALT+ESC,成功弹出消息框。MFC下创建热键是不是so easy?