Modal>BerechnungenDurchführen>Schliessen
-
Hallo ich habe folgendes Problem:
Wenn ich einen Dialog haben will der eine Fortschrittsanzeige implementiert die automatisch gestartet werden soll, so hab ich bis jetzt keine Möglichkeit gefunden das in der MFC zu implementieren.
Meine Grundidee war folgende:
Sobald das Fenster mit der Fortschrittsanzeige angezeigt wird soll der Dialog anfangen zu arbeiten.
Bis jetzt hatte ich das ganze so implementiert das man noch auf nn Knopf drücken muss bis die Bearbeitung startet.Umständlicherweise (und ich bin ja schließlich auch MFC Anfänger) hatte ih folgende Idee im Kopf. Die WM_PAINT Nachricht wird doch aufgerufen sobald das Dialogfeld gezeichnet ist. Diese setzt wiederum eine Variable auf den Wert wahr und startet falls diese Variable noch nicht zuvor gesetzt wurde einen Timer. Der Wiederum setzt eine Variable und schickt an mein Modales Dialogfeld die Nachricht das der Button (den ich unsichtbar gemacht habe) gedrückt wird und dessen Funktionen aufgerufen werden...
So das mal zu meinem Kranken Gedankengang.
Das muss doch einfacher gehen oder?
-
Moin,
Also du hast einen Hauptdlg und einen kleinen modalen Dlg. In dem Hauptdlg führt er etwas aus und auf dem 2ten Dlg ist eine Fortschrittsanzeige. Das 2te Dlg soll jetzt aufgehen und die Progressbar darin anfange zu arbeiten, sobald in dem Hauptdlg jemand auf start drückt. Richtig oder?
Wenn das so ist brauchst du doch nur ne membervariable in deinem 2ten Dialog anlegen int m_iProgressPos und einen Zählwert aus der Vearbeitung von dem 1ten Dlg an das 2te geben.
ODER
Du übergibst den Zeiger vom HauptDlg an das 2te Dlg und sprichst dann im 2ten Dlg mit ctrDeinProgress.SetPos(pDeinDlg->m_iDeinFortschritt); deinen Fortschritt an. Du holst dir quasi die Info vom Fortschritt aus dem ersten Dlg.
Hört sich jetzt bestimmt kompliziert an...liegt daran das ich noch keinen Kaffee hatte *g*
*winke*
Hellsgore
-
Wird die Bearbeitung noch im ersten Dialog ausgeführt, immerhin befindest du dich doch in der DoModal Funktion?
Ist es nicht nötig einen nicht modalen Dialog zu erzeugen.
-
Ja das ist nötig das der 2te Dialog erst dann anfängt zu arbeiten sobald ich im ersten ok drücke. Generell geht es darum das ich eine Anlage über eine Serielle Schnittstelle parametrieren muss. Vorher kommt noch ein Dialogfeld für den DAU das er das Kabel in den Anlage da und da einstecken soll und anschließend beginnt mein Programm zu senden.
Die Frage ist nur wo beginne ich da mit dem 2ten Dialog. Ich meine OnInitDialog wird doch aufgerufen sobald ich vom ersten Dialog den zweiten mit domodal starte. Und das ist zu früh weil wenn ich meine Serial Port senden Routine da reincode dann ist das Programm in so nem Modus wo es sich in ner Endlossschleife befindet und der Dialog wird mir nicht mehr gezeichnet, das senden beginnt sofort.
Nun hab ich mich ein wenig mt Threads beschftigt das die Nachrichtenverarbeitung weiterläuft und ich das Fenster in dem Zeitpunkt bewegen kann. Funktioniert ja auch insoweit nur wenn ich GetMessage Dispatch Message und Translate Message in meinem Unterprogramm aufrufe dann heißt das noch lange nicht das der Dialog auch gezeichnet wird....Somit bezieht sich meine Frage eigentlich darauf ob es sowas wie eine Nachricht an das Fenster gibt das einzeigt das es jetzt gezeichnet ist,
bzw wo ich den Code reinstecken soll das er die Bearbeitung dann anfängt.