当前位置:编程学习 > C/C++ >>

MFC下如何创建热键

首先,通过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秘密基地

补充:软件开发 , C++ ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,