zaehlschleife auf tastendruck anhalten

W

webraccoon

Hallo Forum,

ich suche schon eine geraume Zeit nach einer Möglichkeit eine Schleife laufen zu lassen, etwa für eine Stoppuhr-Funktion und diese auf Tastendruck anhalten zu lassen.

Mit getchar() oder getch() habe ich das Probiert, hier wird die Schleife zwar gestartet, aber
auch erste weitergeführt, wenn eine Taste gedrückt wird.

Jemand eine Idee

gruss
webraccoon
 
Hi ...
ich weiß nicht wie man das gut lösen kann für eine Beliebige Taste.
Aber du kannst es mit GetKeyState für eine Taste realisieren.

z.b.
Code:
//zählschleife
for(int i=0;GetKeyState(VK_RETURN) != TRUE;i++)
{
...
}

dies würde i so lange erhöhn bis du irgendwann die Enter-Taste drückst ... vorrausgesetzt ich habe GetKeyState richtig angewandt, aber kannst ja mal in der MSDN schaun.

Gruß
Shai
 
hmm,

ist auf jedenfall ein Anfang. Kannst Du mir auch sagen welche header ich einbinden mus

gruss
webraccoon
 
moin


Oder so:
Code:
#include <stdio.h>
#include <stdlib.h>


int main()
{
     while(!_kbhit())
     {
          // mache etwas
     }

     return 0;
}


mfg
umbrasaxum
 
hi,

ja danke, das funktioniert. Ich habe !kbhit versucht. Was bedeutet der Unterstrich davor?
Eine Frage habe ich noch und vielleicht kannst Du sie mir beantworten:

Ich möchte das Programm mit Ctrl-C verlassen. Kannst Du mir verraten wie ich diese Kombination abfrage?

gruss
webraccoon
 
moin


Ja was bedeutet der Unterstrich davor?! Gute Frage, der gehört aufjedenfall zu kbhit und es wurde halt so gemacht...


Solche Kombinationen fragst du am besten mit GetKeyState ab wie Shaijan das schon beschrieben hat, selber kann ich dir weiter ncihts dazu sagen da ich die Funktion noch nie Benutzt hab.


mfg
umbrasaxum
 
Code:
int wertA = GetAsyncKeyState(VK_RETURN);

if(wertA!=0){
Taste Gedrückt
}else{
Taste nicht gedrückt
}

bzw. für die stoppuhr:

Code:
int wertA;
while(wertA == 0){

wertA = GetAsyncKeyState(VK_RETURN);

Timer Funktion ausführen(+1 Sekunde)

::Sleep(1000);

}

--> int wertA = GetAsyncKeyState(VK_RETURN);
Hier steht in der Klammer welche Taste "überwacht" werden soll hier im Beispiel ist es die "Return" Taste, wenn sie gedrückt ist gibt sie glaub ich einen negativen Wert zurück, aber bin mir da momentan nicht ganz sicher aber auf jedenfall ist der Wert dann ungleich 0...


ne genaue Auflistung der Einzelnen Tasten findest du unter:

http://msdn.microsoft.com/library/d...wsUserInterface/UserInput/VirtualKeyCodes.asp

Ich seh grad dass du die C Taste mit einbauen willst, die könnte man eventuell so abfragen:

GetAsyncKeyState(0x43);
 
Zuletzt bearbeitet:
hey,

ja danke genau sowas hat mir gefehlt.
Hatte eine "Aktion" mit kbhit abgefragt, ist auch ganz gut für einfache Verhältnisse aber nach einigen praktischen Anwendungen, hat sich gezeigt, daß es doch besser ist, wenn man eine bestimmte Taste drückt.

Gruss
webraccoon
 
Zurück