在mfc中进行多次按键操作

时间:2015-05-19 13:37:39

标签: 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){
           }
       }
   }
}

2 个答案:

答案 0 :(得分:2)

您可以GetKeyState并检查关键字已关闭。

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

每当WM_KEYDOWN到达PreTranslateMessage函数时,您都可以执行此检查。将此用于加速等普通键可以正常工作。 MFC还会对PreTranslateMessage函数中的加速器进行检查。

您应该始终使用GetKeyState,因为此函数会检查处理从消息队列收到的当前消息时向下/向上的键。

答案 1 :(得分:2)

正确的方法是处理WM_CUTWM_COPYWM_PASTE,因为复制/粘贴操作不仅可以完成Ctrl + C,还可以完成CTrl + Insert,等等......如果你想处理这些事情......

“PreTranslateMessage是危险的领域”:真的如此!小心!