Callback function in MFC
-
Ich habe folgendes Problem:
ich habe eine Klasse Optimization, die Klasse hat eine Funktion validate().
Dann habe ich ein MFC CFormView Fenster(Mainfenster) in diesem Fenster ist ein Button, wenn ich diesen anklicke soll ein Fenster RunLog (CDialog) geöffnet werden und in diesem die aktuelle Ereignisse von Optimization.validate() dort in die textbox geschrieben werden.
Soweit ich es verstehe funktioniert es mit den Callback funktion, aber wo und wie es implementiere?.....
Vielen dank im Voraus.
-
Entweder übergibst Du das Handle des Fensters (CWnd-Pointer) an die Funktion. Oder lädst am Ende einfach das Ergebnis um.
Da die Anwendung eigentlich sowieso keine Nachrichten behandelt, wird in dem Fenster während der Funktion auch nichts erscheinen, weil WM_PAINT ja auch nicht ankommt.
Dauert validate so lange, dass es einer "Fortschrittanzeige" bedarf?
Dann solltest Du entweder ein paar mal UpdateWindow eoinsteuen, was das Fenster aber nicht bedienbar macht oder an einen zweiten Thread denken.
-
Dauert validate so lange, dass es einer "Fortschrittanzeige" bedarf?
Dann solltest Du entweder ein paar mal UpdateWindow eoinsteuen, was das Fenster aber nicht bedienbar macht oder an einen zweiten Thread denken.Ja, es kann in einigen Fällen mehr als 1-2 Stunden dauern. Wie wäre es mit einem 2 Thread machbar? Das Runlog Dialog als 2-Thread starten und weiter?
-
Bei 2 Stundenbrauchst Du einen zweiten Thread oder müsstest die Messageloop zwischen drin pollen.
Nein, nicht das Fenster im zweiten Thread öffnen.
Einen zweiten Thread mit dem validate starten und dann zusätzlich das Fenster Handle oder das Handle des Dialoges übergeben. Dort im zweiten Thread mit PostMessage dann Nachrichten über den Fortschritt an den Mainthread senden.
-
Martin Richter schrieb:
Bei 2 Stundenbrauchst Du einen zweiten Thread oder müsstest die Messageloop zwischen drin pollen.
Nein, nicht das Fenster im zweiten Thread öffnen.
Einen zweiten Thread mit dem validate starten und dann zusätzlich das Fenster Handle oder das Handle des Dialoges übergeben. Dort im zweiten Thread mit PostMessage dann Nachrichten über den Fortschritt an den Mainthread senden.
Ich habe die Richtung, wo ich suchen muss, verstanden. Bestimmt melde ich mich noch
Danke