我是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
子句都是 true,因此您永远不会到达 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 资源。