Tastenwiederholrate
-
Ich habe folgendes Problem:
Ich will ein Programm schreiben, das auf Tastendruck einen Kreis auf dem Bildschirm bewegt. Wenn ich eine Taste gedrückt halte, bewegt wird die Nachricht WM_KEYDOWN einmal versendet, der Kreis bewegt sich ein Stück, dann dauert es eine kleine Weile, danach wiederholt sich der Tastendruck, und der Kreis bewegt sich so lange, wie man die Taste gedrückt hält, oder eine andere Taste drückt.
Ich möchte die Tastaturwiederholrate für dieses eine Programm herunterschrauben, sodass es sofort damit anfängt, die Nachricht noch einmal zu versenden. Außerdem möchte ich, dass mehrere Tasten gleichzeitig die Wiederholung machen können, und nicht nur eine.
Geht das irgendwie, aber bitte ohne Direct X?Ps: Wenn ich mich irgendwie unklar ausgedrückt habe, entschuldigung bitte.
PPs: Ich habe schon überall gesucht und nichts gefunden.
-
Also im Spieleprogrammierungs-Forum sieht man hin- und wieder diese Vorgehensweise:
// Globale Variable: char keyStates[256]; // Irgendwo beim Initialisieren: int i; for (i=0; i<256; i++) { keyStates[i]=0; // Taste nicht gedrückt } // In der WndProc: case WM_KEYDOWN: keyStates[wParam]=1; // Taste gedrückt break; case WM_KEYUP: keyStates[wParam]=0; // Taste nicht gedrückt break; // Irgendwo in der Message-Loop oder in einer processInput() oder sowas: if (keyStates['x']>0) { // Taste 'x' ist gedrückt, Kreis bewegen: BewegeKreis(); }Sprich: Du schraubst nicht den Abstand in der die WM_KEYDOWN gesendet wird runter, sondern merkst dir einfach dass die Taste gedrückt ist und bearbeitest das einfach woanders...
-
Vielen Dank!
Das löst praktisch alle Probleme!
Warum bin ich nur nicht darauf gekommen?