In Dialogbasierender Anwendung erkennt ein Dialog den Konstructor des anderen nicht, wieso?
-
Tag,
also ich habe hier zwei Dlgs, im ersten sollen durch optionsfelder optionen gewählt werden, die dann im zweiten umgesetzt werden sollen. aber um die variablen auslesen zu können die ich den optionsfeldern verpasst habe brauche ich erstmal nen handle zum andern Dlg. aber jedes mal wenn ich den konstruktor aufrufen will um mir nen handle zu dieser dlgVar geben zulassen gehts nicht, weil er meint er kennt ihn nicht, obwohl der header included ist.was geht hier schief?
Gruß Tobi.
-
Jetzt bitte nochmal auf deutsch - und evt. mit etwas Code (nein, nicht das komplette Projekt) zur Erläuterung.
-
Du solltest keine Konstr. für eine Dlg aufrufen der schon existiert.
Willst du auf die DLG-Klasse zu greifen dann übergib dem DLG, welcher auf den anderen zugreifen muss, den this-zeiger. Dadurch hat der DLG auch die aktuelle Instanz des DLG.
-
Unix-Tom schrieb:
Willst du auf die DLG-Klasse zu greifen dann übergib dem DLG, welcher auf den anderen zugreifen muss, den this-zeiger. Dadurch hat der DLG auch die aktuelle Instanz des DLG.
jo ich glaube das ist es was ich machen will aber weiss jetzt net wie ich nach deiner beschreibung nach tun soll.

sorry aber MFC is neuland für mich:
also ich habe hier:
[Dialog1] [Dialog2] ------------------------------------------- public: ... void func( int i ); ------------------------------------------- private: int a; ... -------------------------------------------wie komm ich jetzt also von der funktion im Dlg2 an variable a in Dlg1 ??
Gruß Tobi.
-
gar nicht (solange du keinen friend-Zugriff oder öffentliche Getter angelegt hast).
Ansonsten benötigt Dialog2 einen Zeiger/Referenz auf die gültige Dialog1-Instanz - woher du die bekommst, hängt von deinen Anforderungen ab.
-
T0bi schrieb:
... um mir nen handle zu dieser dlgVar geben zulassen gehts nicht, weil er meint er kennt ihn nicht, obwohl der header included ist.
was geht hier schief?
Forward-Deklaration beachten. Probier es mal via Prototypen (falls die MFC das unterstützt).
-
hie rmal das tut:
http://download.pearsoned.de/leseecke/html/VCPLUS6_21Tg/data/start.htmund dann unten an der stelle "Listing 8.6: Die Funktion OnPaint"
da macht der das... hab die variablen auch public net private, war mein fehler.
-
Und wo ist da das Problem? In dem Fall hat der CPaintDlg (Dialog1) einen Zeiger auf seinen Vater-Dialog (CGrafikDlg - Dialog2), den er sich über GetParent() besorgen kann.
-
jo schon das hab ich auch versucht und es kam die meldung das er CDialog nicht kennt.
-
wieso sollte es bei mir net gehen wenns doch gehen sollte?