Variable von Dialog zum Dialog übergeben



  • Ich würde gerne ein Dialog aufrufen, in dem man Einstellugen verändern meines Hauptdialoges verändern kann. Das klappt auch soweit.
    Gerne würde ich aber im Kinddialog schon die Einstellungen anzeigen, die momentan im Hauptdialog aktuell sind. Das heißt: Ich muss auch Variablen vom Hauptdialog zum Kinddialog bekommen.
    Nach einem Eintrag hier im Forum sollte es so gehen:

    GetName() ist eine Funktion vom Hauptdialog
    In meinem Konstruktor vom KindDialog hab ich jetzt folgendes stehen:

    CHauptdialog*  pWnd = (CHauptdialog*)this->GetParent();
    	m_strName = pWnd->GetName();
    	UpdateData(false);
    

    Leider stürzt das Programm direkt beim kompilieren ab. (ein Laufzeitfehler??)
    Weiß einer, was ich falsch mache?
    Mein Kinddialog ist ein normaler Dialog, der vom Hauptdialog aufgerufen wird.



  • welches Programm stürzt direkt beim kompilieren ab? Die Exe selber? Kann ja gar nicht sein, denn die läuft ja noch gar nicht...

    Gibts nen Kompilierfehler?

    Wenn ich das machen sollte, würde ich mir ne globale Struktur anlegen und da die Daten der Dialoge reinspeichern und wieder lesen wenn nötig.

    Gruß, Maxi



  • OK,
    aber wie mache ich dem neuen Dialog die globale Struktur bekannt??

    Ich weiß nicht, ob das schon die exe ist. Das Programm läuft auch noch nicht, aber es kommt so ein Fester, ob der Problembericht an Microsoft geschicht werden soll. Sieht halt nach einem Laufzeitfehler aus.



  • Übergib an den 2ten Dialog den this-Zeiger des ersten und hole dir dann darüber die membervariablen des ersten Dlg.
    Oder baue dir GETFUNKTIONEN da man Variablen wenn möglich nicht public machen sollte.



  • Ich habe jetzt mal den this-Zeiger des ersten Dialoges übergeben.
    Jetzt kann ich die Funktionen des ersten Dialoges im Kinddialog nicht aufrufen...
    Hängt das damit zusammen, dass ein CWnd* und kein CDialog* übergeben wird?

    Hab auch mal versucht vor dem Funktionsaufruf zu Parsen:

    m_strName = (CHauptdialog*)pParent->GetName();
    

    Das funktioniert leider auch nicht. Er kennt GetName() nicht...


Anmelden zum Antworten