Fenster aktualisieren
-
Hallo,
ich starte in meiner Window-Prozedur eine lange andauernde Funktion, wenn man auf einen Button klickt.
Das Problem ist, dass in der Zeit, in der meine Funktion ausgeführt wird, das Fenster "nicht reagiert"..In meiner Funktion befindet sich eine Schleife. Jedesmal wenn sie von neuem durchlaufen wird, könnte man das Fenster anweisen, sich, falls nötig, neuzuzeichnen und ggf. Nachrichten auszuführen.
Von VB her kenne ich die Funktion DoEvents() mit der man das machen konnte..
MfG,
Max
-
RedrawWindow, wird Dir aber wahrscheinlich gar nicht weiterhelfen, denn Dein Ansatz ist schon nit so doll. Du solltest die Funktion, die das Fenster zum laggen bringt, in einen Thread auslagern
.
-
void DoEvents () { MSG msg; while ( PeekMessage (&msg, NULL, 0, 0, PM_REMOVE) ) { TranslateMessage (&msg); DispatchMessage (&msg); } }
-
Hallo,
danke für die Antworten.
Die Funktion von do_events_bauer funktioniert super!! Danke..
Aber ich habe mir schon gedacht, dass das nicht die eleganteste Lösung ist..
Daher @CodeFinder: Wie kann ich eine einzelne Funktion in einen Thread auslagern?
-
In dem Du einen Thread erstellst und in der Thread-Procedure die Funktion aufrufst
.
-
Jo, ich habe jetzt gleich die ganze Funktion in den Thread Prozess ausgelagert..
Ich wusste nur nicht, wie man einem Thread mehrere Parameter übergeben kann, aber man muss sich einfach eine eigene Struktur basteln und die als Pointer mitgeben..
Danke!!
-
Geeenau
. Achte nur ggf. auf Thread-Synchronisation.