Das war eig. nur ein Beispiel, dass dir einen kleinen Denkanstoß geben sollte.
Deine Lösung ist nicht so gut, da das Programm solange unterbrochen wird, bis die Taste nicht mehr gedrückt wird, was nicht immer vorteilhaft ist.
Du könntest das ganze beispielsweise so lösen:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
bool TasteAbcGedrückt = false;
while(IrgendeineBedingung)
{
// wird ausgeführt wenn die Taste gedrückt ist und vorher nicht gedrückt war
if(GetAsyncKeyState(TasteAbc)&0x8000 && !TasteAbcGedrückt)
{
// Irgendetwas tun
// ...
TasteAbcGedrückt = true; // speichern, dass die Taste gedrückt wurde
}
else if(!GetAsyncKeyState(TasteAbc)&0x8000)
TasteAbcGedrückt = false; // speichern, dass die Taste nicht mehr gedrückt ist
}
|
So "merkst" du dir in der Variable TasteAbcGedrückt, dass die Taste im vorherigen Schleifendurchlauf gedrückt war.
Es gibt natürlich noch viele andere Methoden, das anzugehen (z.B. erst auf den Tastendruck reagieren, wenn die Taste nicht mehr gedrückt ist).