Win32 键鼠组合

sys*_*sop 5 c++ keyboard mouse winapi

我需要在 Win32 中结合鼠标和键盘事件,例如Click+ShiftClick+ 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)

我知道这里这里的所有必要参数。

但我不知道如何正确组合它们。

Lef*_*ris 4

假设这是在你的 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,如果按键按下则返回其他值。

  • 嗯...从您在问题中发布的代码来看,我认为这是您想要的功能。嗯..这只是一个简单的程序流程问题。我将修改我的答案以反映它。 (2认同)