如何在MFC中处理多个按键。我尝试了几个关键组合。但是如何推广所有组合键。
BOOL Test::PreTranslateMessage(MSG* pMsg){
if(pMsg->message==WM_KEYDOWN )
{
if(pMsg->wParam == 'C' || pMsg->wParam == 'V')
{
if(GetKeyState(VK_CONTROL) < 0){
}
}
}
}
答案 0 :(得分:2)
您可以GetKeyState并检查关键字已关闭。
if ((::GetKeyState(_T('C')) & 0x8000)!=0 &&
(::GetKeyState(_T('V')) & 0x8000)!=0)
// C and V are down...
每当WM_KEYDOWN到达PreTranslateMessage函数时,您都可以执行此检查。将此用于加速等普通键可以正常工作。 MFC还会对PreTranslateMessage函数中的加速器进行检查。
您应该始终使用GetKeyState,因为此函数会检查处理从消息队列收到的当前消息时向下/向上的键。
答案 1 :(得分:2)