在mfc中处理多个按键

  • 本文关键字:处理 mfc visual-c++ mfc
  • 更新时间 :
  • 英文 :


如何处理MFC中的多个按键。我已经尝试了几个键组合。但是如何推广到所有的组合键。

BOOL Test::PreTranslateMessage(MSG* pMsg){
   if(pMsg->message==WM_KEYDOWN ) 
   {    
       if(pMsg->wParam == 'C' || pMsg->wParam == 'V')
       {
           if(GetKeyState(VK_CONTROL) < 0){
           }
       }
   }
}

您可以GetKeyState并检查哪些键被关闭。

if ((::GetKeyState(_T('C')) & 0x8000)!=0 && 
    (::GetKeyState(_T('V')) & 0x8000)!=0)
    // C and V are down...

当一个WM_KEYDOWN到达PreTranslateMessage函数时,你可以做这个检查。将此用于普通键,如加速键。MFC还在PreTranslateMessage函数中检查加速器。

您应该始终使用GetKeyState,因为当您从消息队列接收到的当前消息被处理时,该函数检查哪些键是down/up。

正确的方法是处理WM_CUT, WM_COPY和WM_PASTE,因为复制/粘贴操作不仅可以通过Ctrl+C完成,还可以通过Ctrl+ Insert完成,等等…如果你想处理这些事情…

"PreTranslateMessage is dangerous territory":真的!保重!

相关内容

  • 没有找到相关文章

最新更新