所谓全局快捷键,即使指在任何情况下,当用户按下某个快捷键后,操作系统
都会执行指定程序
的消息处理函数
使用步骤
1.在程序的OnCreate函数中注册
快捷键
格式:
RegisterHotKey(m_hWnd,wParam参数
值,系统键,快捷键);
例如:
RegisterHotKey(m_hWnd,1001,0,MOD_CONTROL|MOD_SHIFT,'A');
RegisterHotKey(m_hWnd,1002,MOD_CONTROL|MOD_SHIFT,'a');
注意大小写应当分别注册
2.按照通常方法建立消息WM_HOTKEY的处理函数OnHotKey
在函数中根据wParam的值处理快捷键的消息
例如:
if (wParam== 1001||wParam ==1002)
{
CWnd::SetForegroundWindow();
MessageBox("Hello,How do you do");
}
3.在OnDestroy函数中取消快捷键
格式:
UnregisterHotKey(m_hWnd, wParam值);
例如
.h
// Generated message map functions
//{{AFX_MSG(CCDN_BossKeyDlg)
virtual BOOL OnInitDialog();
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void OnDestroy();
//}}AFX_MSG
afx_msg void OnHotKey(WPARAM wParam, LPARAM lParam);
DECLARE_MESSAGE_MAP()
.cpp
BEGIN_MESSAGE_MAP(CCDN_BossKeyDlg, CDialog)
//{{AFX_MSG_MAP(CCDN_BossKeyDlg)
ON_WM_PAINT()
ON_WM_DESTROY()
//}}AFX_MSG_MAP
ON_MESSAGE(WM_HOTKEY, OnHotKey)
END_MESSAGE_MAP()
int CCDN_BossKeyDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CDialog::OnCreate(lpCreateStruct) == -1)
return -1;
RegisterHotKey(m_hWnd,1001,MOD_CONTROL|MOD_SHIFT,'A');
RegisterHotKey(m_hWnd,1002,MOD_CONTROL|MOD_SHIFT,'a');
return 0;
}
void CCDN_BossKeyDlg::OnDestroy()
{
CDialog::OnDestroy();
UnregisterHotKey(m_hWnd, 1001);
UnregisterHotKey(m_hWnd, 1002);
}
void CCDN_BossKeyDlg::OnHotKey(WPARAM wParam, LPARAM lParam)
{
SetForegroundWindow();
}