Also das ist garnet so Schwer.
1. Öffnen des 2. Dialogs:
Du erstellst deinen 2. Dialog mit der Klasse z.B. CMeinZweiterDialog (ich weiß blöder name, aber ist dann einfacher zu erklären). Diese Klasse sollte von der CDialog abgeleitet sein, machst du alles mit dem Klassenassistenten. Ausserdem "includiere" die Header des 2.Dialogs in deine cpp-Datei des 1. Dialoges (#include "MeinZweiterDialog.h"). Dann mach einen Button in deinem 1.Dialog. In der Behandlungs-Routine des Buttons schreibst du dann folgenden Code rein:
{
CMeinZweiterDialog dlg; // instanz auf den 2. Dialog
// jetzt wird der 2. Dialog geöffnet
dlg.DoModal()
//wenn in deinem 2. Dialog ein OK-Button ist und er Dialog nur als Eingabe oder so dient, dann machst du es anders:
if(dlg.DoModal() == IDOK) // wenn beim zweiten Dialog OK-geklickt wird
{
// tue dies
}
}
So das war mal das erste.
Zum Datenaustausch nimmst du einen Zeiger auf z.B. CString als Membervariable deines 2. Dialoges.
Also füge in die CMeinZweiterDialog.h eine Membervariable in der Klassendeklaration unter private ein. z.B:
CString* m_pString;
Dann musst du dem Zeiger natürlich eine Adresse geben wenn du deinen 2.Dialog aufrufst, hier noch mal die geänderte Routine des Aufrurfs des 2. Dialoges:
CMeinZweiterDialog dlg; // Instanz auf den 2.Dailog
UpdateData(TRUE); // schreiben der Daten in die Membervariablen
// m_text ist eine Membervariable eines Editfeldes des 1. Dialoges
dlg.m_string = &m_text; // zuweisen der Adresse unserer MemberVariable
// des Editfeldes an unseren Zeiger des 2.
// Dailoges
if(dlg.DoModal() == IDOK) // öffnen des 2. Dialoges, s.o.
{
MessageBox("Text wurde geändert");
m_text = *dlg.m_string; // den Text der im 2. Dialog geändert
// wurde wird jetzt wieder in die
// Membervariable des 1. Dialogs
// geschrieben.
}
UpdateData(FALSE);
So ich hoffe das du das verstanden hast, ist net so kompliziert. Wenn es einen anderen Weg gibt, dann soll man mich bitte belehren.
Gruss Homer