Auf Thread warten
-
Die MessageLoop wird ja im Thread abgearbeitet!
-
Unsinn! Windows sind threadafin. Wenn also der Thread der das Hauptfenster abarbeitet wartet, dann werden für dieses Fenster keine Nachrichten empfangen.
-
Ja schon, aber ich möchte, dass der Thread weiterläuft nachdem das Hauptprogramm abgearbeitet ist.
-
Hi!
Schick doch ne WM_SELBSTDEFINIERT an deine Schleife, wenn der Thread fertig ist.Gruß,
B.B.
-
(Um es mal in einen ganzen Satz zu bringen) Unter windows wird die WNDPROC (und damit dein Messagehandler) immer in dem thread aufgerufen, in them das Fenster erzeugt wurde.
Kannst Du das, was Du versuchst, genauer beschreiben?
-
Ich versuchs mal des genauer zu beschreiben(Pseudocode):
Main { StarteAlsThread(ThFunc) Hauptfunktion() //Programm weiterlaufen lassen bis Thread beendet wird.!!!! } Hauptfunktion { //Erstelle GUI //Mach noch was anderes } ThFunc { //MsgLoop/verarbeite Events //warte auf Close-Event und beende dann den Thread }
-
Das geht nicht! Du erzeugst die Fenster im Mainthread. Der muss auch eine Messageloop haben.
Jede Messageloop in einem Thread bekommt nur die Nachrichten für die Fenster, die dieser Thread auch erzeugt hat!
http://msdn.microsoft.com/en-us/library/ms644927.aspx
-
Momentan siehts so bei mir aus und das funktioniert:
Main { Hauptfunktion() ThFunc() }
-
Logisch! Jetzt wird die Messageloop im selben Thread ausgeführt wie der Code, der die Fenster ausführt. Eben wie dokumentiert.
Was hast Du denn vor?
-
Ok, sry das hab ich wohl *leicht* missverstanden. *schäm*
Dann werde ich es wohl so lassen wie ich es jetzt habe.
Ich wollte eigentlich nur die Events die während dem Ausführen der Hauptfunktion entstehen bearbeiten.
Trotzdem danke an alle