我是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;
答案 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。