标签:
本人MFC菜鸟一枚,由于项目需求,所以查找资料,终于成功了。下面是操作步骤:
1.声明热键消息处理函数原型
在.h中消息映射声明处(AFX_mSG字样之后)加入如下语句:
LRESULT OnHotKey(WPARAM wParam,LPARAM lParam);
或在MFC Class Wizard(在窗体中右键点击类向导)中添加:
2.消息与相应处理函数相关联
在.Cpp中加入消息映射宏,使消息与相应处理函数发生关系,
ON_MESSAGE(WM_HOTKEY,OnHotKey);
3.为方便以后的操作
预先在类中创建一个响应WM_CREATE和WM_DESTROY消息的函数
OnCreate()与OnDestroy()的框架
4.向系统登记热键
在OnCreate()函数中加入如下代码以向系统登记热键,本例子的热键设为
Ctrl+Shift+A.
int CMFCTestDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CDialogEx::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: 在此添加您专用的创建代码
RegisterHotKey(m_hWnd,1001,MOD_CONTROL|MOD_SHIFT,‘2‘);
RegisterHotKey(m_hWnd,1002,MOD_CONTROL|MOD_SHIFT,‘2‘);
return 0;
}
5.处理热键
在消息处理函数OnHotKey()中对热键进行处理,并可加入用户希望运行的程序代码
LRESULT CMFCTestDlg::OnHotKey(WPARAM wParam,LPARAM lParam)
{
if (wParam== 1001||wParam == 1002)
{
CWnd::SetForegroundWindow();//使得被激活窗口出现在前景
AfxMessageBox(_T("Hello,How do you do!"), MB_OKCANCEL | MB_ICONQUESTION);
}
return 0;
}
6.程序运行完毕后解除热键
在OnDestroy()中通过UnRegisterHotKey()解除热键登记,释放系统资源.
void CMFCTestDlg::OnDestroy()
{
CDialogEx::OnDestroy();
// TODO: 在此处添加消息处理程序代码
UnRegisterHotKey(m_hWnd,1001);
UnRegisterHotKey(m_hWnd,1002);
}
7.编译并运行程序
标签:
原文地址:http://www.cnblogs.com/iZander/p/4877036.html