为对话框应用程序添加热键的方法
1.定义热键的消息标识
#define HOTKEY_XXX 1001
2.窗体程序中添加详细响应函数(.h文件中)
afx_msg HRESULT OnHotKey(WPARAM wParam,LPARAM lParam);
3.窗体程序的.cpp文件中关联热键消息和响应函数
BEGIN_MESSAGE_MAP(CApiCommDlg, CDialog)
//{{AFX_MSG_MAP(CApiCommDlg)
ON_MESSAGE(WM_HOTKEY,OnHotKey)
END_MESSAGE_MAP()
4.窗体的OnInitDialog()函数中注册热键消息
1)两键消息Alt+A
HWND hotKey_hwnd=GetSafeHwnd();
RegisterHotKey(hotKey_hwnd,HOTKEY_SHOWMAINWINDOW,MOD_ALT,'A');
2)三建消息Ctrl+Alt+Z
RegisterHotKey(hotKey_hwnd,HOTKEY_NEWMSGSHOW_CTL,MOD_ALT|MOD_CONTROL,'Z');
5.编写消息响应函数
HRESULT CXXXDilog::OnHotKey(WPARAM wParam,LPARAM lParam)/*热键*/
{
switch(wParam)
{
case HOTKEY_SHOWMAINWINDOW: //Alt+A显示主页面
{
ShowWindow(SW_SHOW);
}
break;
case HOTKEY_NEWMSGSHOW_CTL://Ctrl+Alt+Z显示新消息
{
MessageBox(_T("显示一个新消息!"));
}
break;
default:
break;
}
return TRUE;
}
6.程序退出时候注销热键
void CMainDilog::OnDestroy() /*窗口销毁函数中处理注销热键*/
{
UnregisterHotKey(m_hWnd,HOTKEY_SHOWMAINWINDOW);
UnregisterHotKey(m_hWnd,HOTKEY_MEDIA_CONTOL);
CDialog::OnDestroy();
}