陷入C ++而Loop

时间:2015-03-15 22:36:12

标签: c++ windows while-loop

当我执行这个程序并按住鼠标左键时,它会让我进入while循环。现在这就是我想要的所有美好和花花公子,但是它似乎让我陷入了没有退出的while循环。

现在我在质疑为什么在放开LButton时,为什么我会陷入这个循环中。因为当我放开LButton时,语句不应该返回false?

if (GetAsyncKeyState(0x01)){
        Sleep(250);
        while (GetAsyncKeyState(0x01)){
            /* code */
            Sleep(100);
        }
    }

编辑:

好吧,所以下面是相同的陈述,但使用shift键而不是LButton。它执行得很好。然而,现在当我将它改为LButton时,它会陷入循环中。

if (GetAsyncKeyState(0x10)){
        while (GetAsyncKeyState(0x10)){
            left_click();
            clicks++;
            Sleep(delay);
        }
        display_values(delay, clicks);
    }

我确实尝试了这个功能

bool IsLeftMouseButtonPressed() { return GetAsyncKeyState(VK_LBUTTON) & 0x8000; }

解决了陷入循环的问题,但是现在它只执行while循环内的命令一次。在用户放开LButton之前,我的目标是持续不断。

1 个答案:

答案 0 :(得分:1)

从这个api的msdn:

  

如果函数成功,则返回值指定自上次调用GetAsyncKeyState以来是否按下了键,以及该键当前是向上还是向下。如果设置了最高有效位,则键为关闭,如果设置了最低有效位,则在上次调用GetAsyncKeyState后按下该键。

所以你所追求的是:

  

bool IsLeftMouseButtonPressed(){return GetAsyncKeyState(VK_LBUTTON)&为0x8000; }

如果当前鼠标左键按下

,此函数将返回true