有一些情况可能需要依次按下某些按键来响应一个函数,例如按下了shift+ctrl,然后依次按下ABC,才会执行某个函数,今天正好碰到这个问题,想了个笨办法,实现如下:
// 忽略注册热键之类的东西,直接贴窗口过程
static bool bTDown=false;
static bool bRDown=false;
static bool bYDown=false;
switch(pMsg->message)
{
case WM_HOTKEY:
{
if(HOTKEY_SHOWTEAM_T==pMsg->wParam)
{
bTDown=true;bRDown=false;bYDown=false;
}else if(HOTKEY_SHOWTEAM_R==pMsg->wParam)
{
if(bTDown==true)
{
bRDown=true;
}
else
{
bTDown=bRDown=bYDown=false;
}
}else if(HOTKEY_SHOWTEAM_Y==pMsg->wParam)
{
if(bTDown==true&&
bRDown==true)
{
bYDown=true;
}
else
{////
bTDown=bRDown=bYDown=false;
}
}
///////////////////
if(bRDown&&bYDown&&bTDown)
{
{
//Your code here
}
}
}break;
case WM_KEYUP:
{
if('T'!=pMsg->wParam&&
'R'!=pMsg->wParam&&
'Y'!=pMsg->wParam)
{
bTDown=bRDown=bYDown=false;
}
}
}