MFC下如何创建热键
3650 点击·0 回帖
![]() | ![]() | |
![]() | 首先,通过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? ![]() | |
![]() | ![]() |