Zugriff auf übergeordneten Dialog



  • Hallo,

    ich bin neu in der MFC Welt. Gerade versuche ich einen Dialog in einem anderen zu erstellen (bessere Übersichtlichkeit, ...). Das klappt auch wunderbar. Der Klassenassistent erstellt eine neue Klasse für den Dialog und alles ist wunderbar.

    Aber wie greife ich jetzt von dem "inneren" Dialog auf ein Element des "äußerden" Dialoges zu?

    Muss ich wircklich den umständlichen weg AfxGetApp()->m_meinDialog.... gehen? (Und vorher in der App Class die Membervariable *m_meinDialog anlegen, die auf dlg zeigt?

    &dlg gibt es ja schon in der m_pMainWindow, aber wie bekomm ich daraus dlg?

    Beste Grüße



  • GetParent oder GetOwner sollten gehen ...



  • aber dann habe ich doch wieder nr ein Windowhandle? Ich brauch Zugriff auf die Klasse, nicht das Fenster.

    Das ist doch nicht dasselbe?!? Komm ich übers Window Handle an die Klassenmethoden dran?



  • also ich hab es jetzt schon fast hinbekommen

    Folgender 3Zeiler lässt mich auf eine Methoden des übergeordneten Dialoges zugreifen.

    CMyTestDlg* p;
    p = (CMyTestDlg*) AfxGetApp()->m_pMainWnd;
    p->testMethode();

    Das muss doch auch einfacher gehen!?! Jetzt muss ich in jeder Klasse die "TestDlg.h" einbinden.

    Gibt es wircklich keine einfachere Möglichkeit?
    Vielen Dank!!!



  • Nachtrag: also in jeder Funktion muss ich dieses DIng durchziehen. Und was ich komisch finde, ich muss die TestDlg.h in den cpps Dateien einbinden, denn wenn ich Sie in den hs einbinde, hagelt es FEhlermeldungen.



  • Aber wie greife ich jetzt von dem "inneren" Dialog auf ein Element des "äußerden" Dialoges zu?

    Am besten garnicht -- wüsste nicht warum das notwendig sein sollte.
    Für die Fälle die ich mir jetzt vorstellen kann gibts eigentlich immer ein besseres Design.

    Und ja, WENN du das unbedingt machen willst, dann musst du überall WO du das machen willst auch diese Dialogklasse bekanntmachen, spricht das entsprechende Headerfile inkludieren -- woher soll der Compiler denn sonst wissen welche Funktionen die Klasse hat etc.?

    p.S.:

    Und was ich komisch finde, ich muss die TestDlg.h in den cpps Dateien einbinden, denn wenn ich Sie in den hs einbinde, hagelt es FEhlermeldungen.

    Was für Fehler? Wo bindest du was wie ein? Blubb? Wir können alle nicht hellsehen, also poste mal ein wenig Code. Ist wahrscheinlich ein ganz einfacher Fehler...



  • Hi,

    erstmal vielen Dank für deine Antwort.
    Es kommen Fehler wie diese:
    d:\test\testdlg.h(45) : error C2146: syntax error : missing ';' before identifier 'm_myDlg'
    d:\test\testdlg.h(45) : error C2501: 'CMyDlg' : missing storage-class or type specifiers
    d:\test\testdlg.h(45) : error C2501: 'm_myDlg' : missing storage-class or type specifiers

    Aber das ist auch Käse, denn hier wird dann in der TestDlg.h wird die MyDlg.h includiert und anders herum auch. Das kann ja nie aufgelöst werden.

    ================
    Einfaches Beispiel:
    [url] http://jogipalace.funpic.de/mfc/demo.jpg
    [/url]
    Durch Drücken des Buttons soll ein Text in der Ausgabebox erscheinen. Das ganze ist auf mehrere Dialoge aufgeteilt, weil der Dialog später komplex wird. Zum Beispiel kommt ein CTabCtrl (also so ein Registerreiter hin und dort hat ja sowieso jede Seite einen eigenen Dialog)

    Die Frage ist, wie bekmm ich jezt Zugriff auf die Methoden des Hauptdialoges.

    Ich habe das einfache Beispiel (das allermeiste ist vom MFC Erstellungs Assistent)hier hochgeladen. Ich habe nur den neuen Dialog, sowie die zugehörige Klasse erstellt und das dann in der TestDlg::OnInit eingebunden.
    [url] http://jogipalace.funpic.de/mfc/Test.rar
    [/url]

    VIELEN DANK!!!


Anmelden zum Antworten