如何处理按键ctrl + shift + A在sdi mfc中

时间:2015-05-18 08:50:36

标签: visual-c++ mfc

我是vc ++的新手。如何处理按键ctrl + shift + A在sdi mfc中。 对于ctrl + A代码工作正常。

case _T('A'): 

     if(GetKeyState(VK_CONTROL) & 0x8000){
         MessageBox(_T("Key Ctrl+A is pressed"));
     }
     else if((GetKeyState(VK_CONTROL) & 0x8000)&&(GetKeyState(VK_SHIFT) & 0x8000)){
         MessageBox(_T("Key Ctrl+Shift+A is pressed"));
     }

    break;

1 个答案:

答案 0 :(得分:4)

你的第一个if - 子句是真的,是否按下 Shift 键,所以你永远不会到达else - 子句。如果您更改了陈述的顺序,您将同时获得两者:

case _T( 'A' ): 
    if ( ( GetKeyState( VK_CONTROL ) < 0 ) && ( GetKeyState( VK_SHIFT ) < 0 ) {
        MessageBox( _T( "Key Ctrl+Shift+A is pressed" ) );
    } else if ( GetKeyState( VK_CONTROL ) < 0 ) {
        MessageBox( _T( "Key Ctrl+A is pressed" ) );
    }
    break;

如果您想全局处理按键操作,可以改用Keyboard Accelerators。设置加速器的最直接方法是ACCELERATORS resource