如何处理MFC中的多个按键。我已经尝试了几个键组合。但是如何推广到所有的组合键。
BOOL Test::PreTranslateMessage(MSG* pMsg){
if(pMsg->message==WM_KEYDOWN )
{
if(pMsg->wParam == 'C' || pMsg->wParam == 'V')
{
if(GetKeyState(VK_CONTROL) < 0){
}
}
}
}
您可以GetKeyState并检查哪些键被关闭。
if ((::GetKeyState(_T('C')) & 0x8000)!=0 &&
(::GetKeyState(_T('V')) & 0x8000)!=0)
// C and V are down...
当一个WM_KEYDOWN到达PreTranslateMessage函数时,你可以做这个检查。将此用于普通键,如加速键。MFC还在PreTranslateMessage函数中检查加速器。
您应该始终使用GetKeyState,因为当您从消息队列接收到的当前消息被处理时,该函数检查哪些键是down/up。
正确的方法是处理WM_CUT, WM_COPY和WM_PASTE,因为复制/粘贴操作不仅可以通过Ctrl+C完成,还可以通过Ctrl+ Insert完成,等等…如果你想处理这些事情…
"PreTranslateMessage is dangerous territory":真的!保重!