Clanintern Clanintern Clanintern

Forum

Öffentliche Foren
FORUM: Spiele & Computer THEMA: C++ User Click abwarten
AUTOR BEITRAG
Sexsklave

RANG Skill Captain

#1 - 26.04 09:11

Hi,

ich versuche mich gerade daran ein C-Programm in klicki bunti umzuschreiben, hab sowas aber noch nie gemacht und hänge jetzt an folgendem Problem:

Button1 startet neuesSpiel()

neuesSpiel() muss irgendwann auf eine Eingabe und ButtonClick des Benutzers warten, bevor es weitergeht.

Wie macht man das?

Habe es bisher nur mit ner while Schleife versucht, die läuft, so lange der Benutzer noch nichts eingegeben hat, aber dann hab ich das Problem, dass ich nichts mehr in meinem Fenster anklicken kann, da das ja durch die while Schleife geblockt ist.

Das ganze ist eine Win Forms Application oder so. Ich benutze dafür den Borland C++ Builder.
vaest´ark // patrick *circle of confusion*

RANG Master of Clanintern

#2 - 26.04 09:48

normalerweise hängt man sich mit einem event-handler an die message-queue an. dieser event-handler wird dann getriggert, sobald windows (resp. jedes andere betriebssystem) einen mausklick in dieser applikation feststellt und diesen in die mq legt.
Sexsklave

RANG Skill Captain

#3 - 26.04 09:56

danke, dann werd ich mir das mal anschauen
Sexsklave

RANG Skill Captain

#4 - 27.04 20:07

Ok irgendwie raff ichs nicht so ganz^^

Also Event-Handler sind doch die button_Click() Sachen, die mir Visual Studio automatisch erstellt oder?

Die hab ich auch schön alle mit Code gefüllt.

Wenn ich jetzt in meinem Fall den buttonNewGame klicke, wird auch das ausgeführt was ich will. Nach ein paar Berechnungen muss ich aber warten, bis der Benutzer ein paar andere Buttons klickt und schlißlich den buttonOK. Dann kann meine Berechnung erst weiter gehen.

Wie löst man das am besten.

Ich hab im Moment ne maga ugly Lösung die halbwegs funkioniert, aber Schrott ist:
code:
 do {
 Application::DoEvents();
 }
 while(abbruch!=1);

abbruch wird mit buttonOK auf 1 gesetzt.

Dass das nicht gut ist weiß ich, aber wie macht man es richtig?

ich benutze C++/CLI mit .NET
SirLant

RANG Sucker

#5 - 27.05 11:18

Hast du da überhaupt noch ne Endlosschleife? Gibts da nicht eine vorgefertigte run() Methode die du in der main() aufrufst und die sich dann um alles kümmert und einfach deine Ereignis-Handler aufruft?

Wenn nicht ist das eigentlich schon eine legitime Methode, das ist einfach Polling im Gegensatz zu einer Benachrichtigung (wie deine Event-Handler, oder z.B. Interrupts - eigentlich auch nichts anderes als Event-Handler).