MFC注册全局快捷键

  • 注册全局快捷键 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   
  • }  



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值