MFC注册全局快捷键

原创 2017年01月03日 14:22:01

  • 注册全局快捷键 RegisterHotKey(m_hWnd,HotKeyId,MOD_ALT,VK_F2);
注意:A.第三个参数还可以是MOD_CONTROL|MOD_ALT,MOD_CONTROL来表示组合键
B.最后一个参数可以选择辅助键 VK_F1 -- VK_F10,或者是字母,但是字母只能是大写字母,小写字母不生效,经过测试的。

  • 添加WM_HOTKEY消息,生成函数OnHotKey(UINT nHotKeyId, UINT nKey1, UINT nKey2)
这里的nHotKeyId 对应于全局的HotKeyId。
代码如下:
OnHotKey(UINT nHotKeyId, UINT nKey1, UINT nKey2)
{
CView::OnHotKey(nHotKeyId, nKey1, nKey2);
if(nHotKeyId == HotKeyId )
{
...................
}

  • 注册全局快捷键 RegisterHotKey(m_hWnd,HotKeyId,MOD_ALT,VK_F2);

 注意:A.第三个参数还可以是MOD_CONTROL|MOD_ALT,MOD_CONTROL来表示组合键

       B.最后一个参数可以选择辅助键 VK_F1 -- VK_F10,或者是字母,但是字母只能是大写字母,小写字母不生效,经过测试的。


  • 添加WM_HOTKEY消息,生成函数OnHotKey(UINT nHotKeyId, UINT nKey1, UINT nKey2)

这里的nHotKeyId 对应于全局的HotKeyId。

代码如下:

OnHotKey(UINT nHotKeyId, UINT nKey1, UINT nKey2)
{
 CView::OnHotKey(nHotKeyId, nKey1, nKey2);
 if(nHotKeyId == HotKeyId )
 {
 ...................

 }



官方文档如下:

当用户按完整系统快捷键时,框架调用该成员函数。

afx_msg void OnHotKey(
    UINT nHotKeyId, 
    UINT nKey1, 
    UINT nKey2
);

参数

说明

[in]nHotKeyId

生成消息的快捷键的标识符。  如果消息由一个SYSTEM中定义的快捷键生成的,此参数将为下列值之一:  

  • IDHOT_SNAPDESKTOP -的桌面快捷键按下了。

  • IDHOT_SNAPWINDOW -的windows快捷键按下了。

[in] nKey1

一个按位组合(或指示)的标志为按下的键与键的组合。nKey2 参数指定了。  可能的值包括:  

  • MOD_ALT -任何ALT键按下了。

  • MOD_CONTROL -任何CTRL键按下了。

  • MOD_SHIFT -任何SHIFT键按下了。

  • MOD_WIN -任何Windows键按下了。  这些键标记与Microsoft Windows徽标。  

[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   
  • }  



版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)