读书人

在MFC中使用热键解决方案

发布时间: 2012-02-12 17:16:33 作者: rapoo

在MFC中使用热键
在构造函数中注册热键后
CFlyDlg::CFlyDlg(CWnd* pParent /*=NULL*/)
: CDialog(CFlyDlg::IDD, pParent)
{
//省略其他语句
RegisterHotKey(NULL,0x1001,NULL,VK_F12);
}
执行热键的程序,程序名是怎么样的?
以下是我写的执行程序,但是无法使用
LRESULT CFlyDlg::OnHotKey(WPARAM wParam, LPARAM lParam)
{
if (wParam == 0x1001 && lParam == VK_F12)

{
//执行程序
}
}
以前写过这些的,郁闷,不小心把硬盘全部格式化了,55555。
高手请说明一下我哪里写错了。
(我的要求是这个程序在后台运行,点击热键后,执行if (wParam == 0x1001 && lParam == VK_F12)后面的程序)

[解决办法]
那就应该是RegisterHotKey没有成功。
在这方法中,第一个参数是接受热键的窗口handle, 不能为NULL.
另外,你通过查看该方法的返回值来确定建立热键是否成功。

#define ID_HOTKEY 0x1011

if (!RegisterHotKey(hDlg, ID_HOTKEY, NULL, VK_F12))
{
AfxMessageBox(TEXT( "Register Hot Key Failed. "));
}

hDlg是对话框的句柄。
将0x1011替换掉,便于改动。

读书人网 >C++

热点推荐