我是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资源。