GetAsyncKeyState problem
-
hallo
ich habe ein kleichen problem mit GetAsyncKeyState
ich bin immoment etwas am programmieren, und will, das wenn ich die rechte maus taste drücke, etwas an geht und wenn ich die nochmals drücke, es wieder aus geht ...
habe mir auch schon etwas zusammen geschrieben, aber das funktioniert nicht ganzif(GetAsyncKeyState(VK_RBUTTON)) = 1; { //programm startet { if(GetAsyncKeyState(VK_RBUTTON)) = 0; { //programm hört auf } } }
woran kann es liegen??
ps hab suchfunktion benutzt, aber leider nichts gefunden...
-
Probiers mal so:
short LMBState;
Boolean LMBDown;
LMBState=GetAsyncKeyState(VK_LBUTTON);
LMBDown=((LMBState & (1<<15))!=0);
if (!LMBDown)
{
}Geht auch mit anderen Tasten!
Gruss
Frank
-
geht net ...
-
cracy112 schrieb:
geht net ...
Hallo,
vielleicht hast du nur übersehen, dass Frank mit seinem Beispiel die linke Maustaste abfragt?
Ratsam ist auch, den Klick in einer anderen Variablen zu speichern:
Beispiel mit Franks Code:
short RMBState; bool RMBDown; bool start; //---------------------- RMBState = GetAsyncKeyState(VK_RBUTTON); RMBDown = ((RMBState & (1<<15))!=0); if (RMBDown) start =! start; // hier ist der Ein-/Ausschalter if (start) StatusBar->Panels->Items[0]->Text = "Programm gestartet"; else StatusBar->Panels->Items[0]->Text = "Programm gestoppt";
mfg
kpeter
-
Hallo,
hmm ... grundlegend sollte man vielleicht erstmal anmerken dass dieses Konstrukt
if(GetAsyncKeyState(VK_RBUTTON)) = 1;
keinen Sinn macht?!
LG
-
ich bekomme sehr viele fehler meldungen ...
...: error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt. ...: error C2371: 'RMBState': Neudefinition; unterschiedliche Basistypen ...: Siehe Deklaration von 'RMBState' ...: error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt. ...: error C2371: 'RMBDown': Neudefinition; unterschiedliche Basistypen ...: Siehe Deklaration von 'RMBDown' ...: error C2059: Syntaxfehler: 'if' ...: error C2062: 'float'-Typ unerwartet ...: error C2059: Syntaxfehler: 'if' ...: error C2059: Syntaxfehler: 'else'
weis aber iwi nich warum ?!
edit...
so ich glaube ich drücke es nochmal besser aus, damit man mitr besser helfen kannn
ich weill das das iwi so aussieht:void ...() { if(GetAsyncKeyState(VK_RBUTTON)) { *(float*)... = 2; }
weil das ist der code, den ich bis her hab ... ich buss hald noch wissen, wie man das dieses (float)... = 2; auf = 0; stellt...
-
Irgendwie schlägt mein Trolldetektor gerade an.
Falls das ein Fehlalarm ist, dann entschuldigung und siehe hier. Damit solltest du starten.
Gruß
KK
-
mhh weist du es oder weist du es nicht ??
ok auch wenn ich noch nicht so weit bin, kann man mir doch trotzdem helfen
oder muss man profi sein damit mann hier hilfe bekommt ?! ...
-
Hallo,
vermutlich arbeitest du mit Visual C++... ?
Dann bist du im falschen Forummfg
kpeter
-
mhh das is jetzt nen bissel peinlich xDDD
sry dass ich so nen aufwind gemacht habe... wo muss ich denn dann hin ?!edit: habs gefunden sry ... XD
-
Hallo
Also diese Zeile
StatusBar->Panels->Items[0]->Text = "Programm gestartet";
deutet schon auf die VCL des C++ Builders bzw. Studios hin. Was natürlich die Frage aufwirft, warum du nicht die dafür vorgesehenen OnKey-Events benutzt? In einer VCL-Anwendung ist GetAsynchKeyState ohne extra Thread relativ unnütz.
Deine Fehlermeldung lassen sich nicht allein mit deinem gezeigten Code aufklären. Was du mit dem (float) vorhast ist auch unklar.bis bald
akari
-
akari schrieb:
Also diese Zeile
StatusBar->Panels->Items[0]->Text = "Programm gestartet";
deutet schon auf die VCL des C++ Builders bzw. Studios hin.
akari, die hatte ich gepostet in der Annahme, dass er mit dem BCB arbeitet
-
Hallo
Ah, richtig. Na dann soll crazy erstmal sagen in welcher Umgebung er programmiert : Reines C/C++/WinAPI, VCL im C++ Builder/Dev Studio oder MFC im MS Visual Studio.
bis bald
akari