我是vc ++的新手。如何处理sdi mfc中的Ctrl + Shift + A。对于ctrl +代码可以正常工作。
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;
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;
如果要全局处理按键,则可以改用键盘加速器。设置加速器最直接的方法是通过ACCELERATORS资源。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句