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



我是vc++新手。如何处理在sdi mfc中按ctrl+shift+A键。对于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;

无论Shift键是否按下,您的第一个if -子句都为真,因此您永远不会到达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;

如果你想全局处理按键,你可以使用键盘加速器。设置加速器最直接的方法是通过accelerators资源。

相关内容

  • 没有找到相关文章

最新更新