Mehrfaches Resgistrieren eines Tastendrucks bei dauerhaft gedrückter Taste vermeiden



  • Ich hätte mal eine Frage: Gibt es eine Möglichkeit, daß wenn ich eine Taste drücke und gedrückt halte, dieser Tastendruck nur einmal registriert wird, bis ich die Taste wieder loslasse und dann neu drücke?
    Also, was ich meine, ist folgendes:

    do
    {
        eingabe=getch ();
    
        if (eingabe==irgendwas)
            tu etwas;
    }
    while (irgendeine Bedingung);
    

    Wenn ich jetzt zum Beispiel ein A drücke und gedrückt halte, dann geht er mehrfach durch diese Schleife, weil er durch mein gedrückt halten alle paar Millisekunden einen Tastendruck erkennt. Nun will ich es aber so, daß man erst die Taste loslassen muß, bevor er einen erneuten Tastendruck registriert.

    Als einfaches Beispiel könnte man sich hier ein Spiel vorstellen, bei dem gemessen wird, wie lange man braucht, um 100 mal auf eine bestimmte Taste zu drücken. Also jedes Mal, wenn er durch getch () läuft, wird eine Variable um eins erhöht. Und da würde es ja wenig Sinn machen, die Taste einfach nur gedrückt zu halten.

    Wer hat eine Idee?



  • getch() ist in diesem Fall dann zu hoch in der Hierachie. Schau dir mal ReadConsoleInput() in der MSDN an. Wenn ein Key-Event ankommt kannst du es hier einlesen und erhältst auf einen Schlag alle nötigen Informationen dazu.

    MfG SideWinder



  • Wie benutze ich diese Funktion denn? Irgendwie sehe ich da nicht durch.


Anmelden zum Antworten