热键设计为Ctrl+Alt+B,当程序启动后,无论当前是否处于程序界面,都可以关闭此程序。
1.在XXDlg.h中手动添加以下
protected:
afx_msg LRESULT OnHotKey(WPARAM wParam, LPARAM lParam);
2.在XXDlg.cpp中手动添加
BEGIN_MESSAGE_MAP(CMFCHotKeyCloseExeDlg, CDialogEx)
ON_MESSAGE(WM_HOTKEY, OnHotKey)//手动添加内容
END_MESSAGE_MAP()
3.在初始化函数XXDlg::OnInitDialog()中注册热键
// TODO: 在此添加额外的初始化代码
RegisterHotKey(GetSafeHwnd(),WM_HOTKEY,MOD_CONTROL|MOD_ALT,'B');
4.添加OnHotKey的实现
LRESULT CMFCHotKeyCloseExeDlg::OnHotKey(WPARAM wParam, LPARAM lParam)
{
if (wParam == WM_HOTKEY)
{
AfxGetMainWnd()->SendMessage(WM_CLOSE);//收到ctrl+alt+b时,发送关闭消息
}
return true;
}
5.切换到资源视图下,打开对话框,右键选择类向导,添加WM_CLOSE消息
6.添加WM_CLOSE消息后,MFC自动生成XXDlg::OnClose()
// TODO: 在此添加消息处理程序代码和/或调用默认值
CDialogEx::OnClose();
int nRet = UnregisterHotKey(GetSafeHwnd(), WM_HOTKEY);
if(!nRet)
{
MessageBox(_T("关闭失败"));
}
工程源代码我已经上传,但是优快云不能选择下载分值,本来想提供免积分下载,但是自动生成的是5分。唉,感觉已经不是原来的优快云了。
https://download.youkuaiyun.com/download/martinkeith/10997985