Nachricht von einem Dialog zu modalen, geöffneten 2. Dialog schicken

gehrti

Mitglied
Hi!

Ich habe eine dialogbasierte MFC Anwendung, die u.a. als TCP/IP Server fungiert und ich habe einen modalen Dialog, der mir die Verbindungen anzeigt und aus dem Hauptdialog heraus aufgerufen wird.

Mein Problem ist: Wie kann ich es realisieren, dass wenn ich in der Verbindungsübersicht bin (also im modalen Dialog) und der Server im Hauptdialog eine neue Verbindung annimmt, sofort die Übersicht im aktuellen Dialog aktuallisiert wird.
Ich hab probiert, dass ich eine Nachricht schicke, aber die scheint im dem modalen Dialog nicht anzukommen.

Need help!

MfG. Thomas
 
Sollte eigentlich so gehen, dadurch, dass du eine "richtige" Nachricht schickst, ist das sogar Thread-safe.
Zeig mal den Nachrichten-Sendecode. Der sollte so ähnlich aussehen:

Wenn du eine Membervariable auf deinen modalen Dialog hast, der so oder so ähnlich aufgebaut wird:

m_dlgVerbindungen.DoModal();

dann kannst du einfach mit

m_dlgVerbindungen.SendMessage( WM_USER + 17, x, y );

eine Nachricht an ihn senden.
 
Wenn Du einen modale Dialog öffnest, dann heißt das, das die Abarbeitung des aufrufenden Dialoges angehalten wird, d.h. dieser Dialog steht dann so lange, bis der modale Dialog zurückkehrt. Es wird also während dieser Zeit nur der modale Dialog ausgeführt. Wie und wo hast Du denn das Senden der Nachricht an den Anzeigedialog implementiert? Und hast Du einen eigenen Task für die Verarbeitung der Verbindungen?

EDIT: Zefix, Endurion! Jetzt warst Du schon wieder schneller! ;-)
 
Zuletzt bearbeitet:
Supi, hat geklappt!

Ich hatte es erst mit PostMessage versucht aber das funktionierte nicht.
Das einzigste, was mich jetzt noch stört ist, dass die Variable für den 2. Dialog im ersten global definiert sein muss, da ja die Nachricht wo ganz anders ausgerufen wird, als die Stelle wo der Dialog gestartet wird. Gibt es da noch ne andere Möglichkeit?

Merke gerade, dass ich doch noch ein kleines Problem habe: Wenn der Dialog nicht offen ist, bekomme ich natürlich nen Fehler, wenn ich die Message an ihn schicken will. Wie kann ich abfragen, ob der Dialog aktiv ist, oder nicht?

MfG. Thomas
 
Zuletzt bearbeitet:
Statt global kannst du den als Member-Variable halten (im Hauptdialog). Theoretisch reicht ja auch das HWND des modalen Dialoges, dann mit ::SendMessage( hwndDlg, .. ) arbeiten.

Wenn m_dlgVerbindungen.GetSafeHwnd() NULL zurückgibt, dann gibt es den Dialog nicht und du brauchst/kannst keine Nachricht schicken.

jokey2: Tschuldigung :)
 
Zurück