Wie GetAsyncKeyState verwenden, um zu sehen, Taste gedrückt wurde, wird für x Sekunden

Ich versuche, erstellen einen code, der erkennt, wenn der Maus-Knopf wurde gedrückt. Bisher habe ich einen code, der erkennt, wenn die Taste wurde einmal gedrückt. Aber es ist nicht lassen Sie mich überprüfen, wenn man den Knopf ständig gedrückt. Für e.g die linke Maus-Taste gedrückt, dann startet ein timer, nach 0,5 Sekunden wird es noch einmal zu überprüfen und wenn es immer noch down ist-Ausgabe etwas.

Ich will es einrichten wie diese

while (true)
{

    if (GetAsyncKeyState(VK_LBUTTON) & (0x8000 != 0))
    {

        cout << ("left button pressed") << endl;
        Sleep(500);
        if (GetAsyncKeyState(VK_LBUTTON) & (0x8000 != 0))
        {

            cout << ("Left button held down") << endl;
        }

    }
}

Jedoch funktioniert es nicht, es gibt nur die zweite Aussage, wenn ich Doppelklick schnell hintereinander.

Bestimmt, ob eine Taste nach oben oder unten zu der Zeit die Funktion aufgerufen wird, und ob die Taste gedrückt wurde, nachdem ein vorheriger Aufruf von GetAsyncKeyState.

Den msdn-website sagt, dass. Bedeutet das, dass ich überprüfen soll, ob es ist, nach der Zeit, um das Ergebnis zu erhalten was ich will.

  • 0x8000 ist immer ungleich 0 ist, legen Sie die Klammern richtig. Der einfachste Weg, dies zu testen ist mit if (GetAsyncKeyState(VK_LBUTTON) < 0). Jetzt wissen Sie, warum GetAsyncKeyState() hat die sehr ungewöhnliche KURZE Rückkehr geben.
InformationsquelleAutor vulcanicrook | 2017-01-31
Schreibe einen Kommentar