灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:2903回复:0

[C++技术]MFC下如何创建热键

楼主#
更多 发布于:2012-09-06 11:33


首先,通过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?






喜欢0 评分0
游客

返回顶部