sys*_*sop 5 c++ keyboard mouse winapi
我需要在 Win32 中结合鼠标和键盘事件,例如Click+Shift或Click+ Alt+ Shift。
例如(伪代码):
case WM_LBUTTONDOWN:
if (Shift)
//click+Shift
if (Shift && Ctrl)
//click+Shift+Ctrl
if (Shift && Alt)
//click+Shift+Alt
break;
Run Code Online (Sandbox Code Playgroud)
但我不知道如何正确组合它们。
假设这是在你的 winproc 中:
if(wParam & MK_SHIFT)
{
if (wParam & MK_CONTROL && wParam & MK_SHIFT)
{
//click+Shift+Ctrl
}
else if(wParam & MK_SHIFT && HIBYTE(GetKeyState(VK_MENU)) & 0x80)
{
//alt+shift
}
else
{
//just shift
}
}
Run Code Online (Sandbox Code Playgroud)
Shift、单击和 Alt 有点棘手,您必须使用不同的方式
为什么要这样?您将从WM_LBUTTONDOWN页面注意到,对于发送的每个信号,您都有给定的参数。其中之一是 wparam。根据是否按下某些特殊键,它可以具有不同的值
由于 WM_LBUTTONDOWN 信号的 wparam 不包含有关 alt 按钮的信息,因此您必须使用GetKeyState函数,如果按键按下,则该函数返回高位值 1,如果按键按下则返回其他值。