- 注册全局快捷键 RegisterHotKey(m_hWnd,HotKeyId,MOD_ALT,VK_F2);
B.最后一个参数可以选择辅助键 VK_F1 -- VK_F10,或者是字母,但是字母只能是大写字母,小写字母不生效,经过测试的。
- 添加WM_HOTKEY消息,生成函数OnHotKey(UINT nHotKeyId, UINT nKey1, UINT nKey2)
代码如下:
OnHotKey(UINT nHotKeyId, UINT nKey1, UINT nKey2)
{
CView::OnHotKey(nHotKeyId, nKey1, nKey2);
if(nHotKeyId == HotKeyId )
{
...................
}
- 注册全局快捷键 RegisterHotKey(m_hWnd,HotKeyId,MOD_ALT,VK_F2);
- 添加WM_HOTKEY消息,生成函数OnHotKey(UINT nHotKeyId, UINT nKey1, UINT nKey2)
这里的nHotKeyId 对应于全局的HotKeyId。
代码如下:
OnHotKey(UINT nHotKeyId, UINT nKey1, UINT nKey2)
{
官方文档如下:
当用户按完整系统快捷键时,框架调用该成员函数。
afx_msg void OnHotKey( UINT nHotKeyId, UINT nKey1, UINT nKey2 );
参数 | 说明 |
---|---|
[in]nHotKeyId | 生成消息的快捷键的标识符。 如果消息由一个SYSTEM中定义的快捷键生成的,此参数将为下列值之一:
|
[in] nKey1 | 一个按位组合(或指示)的标志为按下的键与键的组合。nKey2 参数指定了。 可能的值包括:
|
[in] nKey2 | 快捷键的虚键控代码。 |
Unregister热键
- void CMyEdit2::OnDestroy()
- {
- CEdit::OnDestroy();
- //Unregister热键
- #ifdef _DEBUG
- int nRet = UnregisterHotKey(GetSafeHwnd(), m_nHotKeyID[0]);
- if (!nRet)
- AfxMessageBox(_T("UnregisterHotKey 0 false" ));
- nRet = UnregisterHotKey(GetSafeHwnd(), m_nHotKeyID[1]);
- if (!nRet)
- AfxMessageBox(_T("UnregisterHotKey 1 false" ));
- #else
- UnregisterHotKey(GetSafeHwnd(), m_nHotKeyID[0]);
- UnregisterHotKey(GetSafeHwnd(), m_nHotKeyID[1]);
- #endif
- }
- void CMyEdit2::OnDestroy()
- {
- CEdit::OnDestroy();
- //Unregister热键
- #ifdef _DEBUG
- int nRet = UnregisterHotKey(GetSafeHwnd(), m_nHotKeyID[0]);
- if(!nRet)
- AfxMessageBox(_T("UnregisterHotKey 0 false"));
- nRet = UnregisterHotKey(GetSafeHwnd(), m_nHotKeyID[1]);
- if(!nRet)
- AfxMessageBox(_T("UnregisterHotKey 1 false"));
- #else
- UnregisterHotKey(GetSafeHwnd(), m_nHotKeyID[0]);
- UnregisterHotKey(GetSafeHwnd(), m_nHotKeyID[1]);
- #endif
- }