Aus einem Dialog mit eigenem CALLBACK return abfangen

HCWD

Erfahrenes Mitglied
Servus

Ich hab ein Hauptfenster, das einen modalen Dialog mit eigener CALLBACK Funktion öffnet. Soll eine Art Login sein. wenn ich jetzt einfach mal den Dialog schließe, gleichzeitig die Werte aus den Editboxen abrufen und diese Werte in die Callback von dem Hauptfenster (nicht Dialog Callback) abspeichern will... wie bekomm ich das gebacken?

Die Editboxne habe ich erfolgreich mit GetDlgItemText abgerufen und in Char[]-Variablen in der CALLBACK des Dialoges abgespeichert. Wie bekomme ich es jetzt hin, diese Variablenwerte in weitere Variablen der CALLBACK des Partens zu übergeben?

Vorwissen: Beide Callbacks sind in getrennten .ccp Dateien, welche logischerweise durch eine Headerdatei verbunden sind.
 
Da kommt einem das OOP ein bißchen in die Quere.

Dein Problem ist simpel: Du hast zwei Werte, die ein Objekt kennt. Die möchtest du jetzt an ein anderes Objekt übergeben.

Gib dem Dialog über den LPARAM bei DialogBox einen Pointer auf irgendwas mit, wo du dann die Variablen drin speichern kannst.
 
Ich will ja nicht der neu erstellten DialogBox einen Wert mit geben, sondern die neu erstellte Box soll beim Schließen wieder einen Wert zurück an das Parent liefern. Und hier weiß ich nicht mehr weiter.
 
Zuletzt bearbeitet:
Das kommt auf das selbe raus. Du kannst dir in der Dialog den Pointer auf das Parent merken (kommt in WM_INITDIALOG glaube ich), und dann beim Beenden (du rufst ja irgendwo EndDialog auf) die Werte dem Parent direkt reinschreiben.
 
Ich bin mir sicher, dass deine Antwort hilfreich ist, aber irgendwie steh ich grad übelst auf der Leitung und ich kann es nicht nachvollziehen, wie du das meinst.

Könntest du mir es vielleicht mit Codebeispielen oder ähnlichem erklären. Wäre ich sehr dankbar. :-)
 
Mein Fehler. Es gibt analog zur DialogBox Funktion noch eine weitere, DialogBoxParam . Bei dieser kannst du hinten einen Parameter mitgeben, den erhältst du bei WM_INITDIALOG in LPARAM. Da packst du einen Pointer auf dich selbst rein:

DialogBoxParam( bla, blubb, hurz, wullewatz, (LPARAM)this );

In WM_INITDIALOG merkst du dir den Wert, dort, wo du in der DialogProc EndDialog aufrufst, schreibst du dir die benötigten Werte rein:

Parent* pParent = (Parent*)GemerkterLParamWert;
pParent->Passwort = xxxx
pParent->User = yyy
EndDialog( hwnd );
 
Zurück