klassen, funktionen, ..
-
nö geht ned..
mit friend könnt ich private und protected functions aufrufen.
aber die funktion die ich aufrufen will is eh public
-
Du könntest ein Objekt der Klasse CIrgendwasDlg erstellen. Dann kannst Du zugreifen.
-
siehe meine probleme abschnitt 1: *g*
wie kann ich jetzt entweder eine funktion die in CIrgendwasDlg festgelegt ist als pointer übergeben?
->error C2276: '&' : Ungueltige Operation auf Ausdruck einer gebundenen Member-Funktionhabs jez scho 100 verschiedene sachen probiert.. *verzweifel*
-
Hm, und was hat das ganze mit MFC zutun?
Das ganze ist ein simples C++-Problem, was hier schon öfter gelöst wurde, denn es ist grundsätzlich nicht möglich, ohne die Instanz eines Objektes zu haben, auf eine nichtstatische Memberfunktion zuzugreifen.
-
bei einer "normalen" Klasse ja..
aber er(der compiler) meckert immer wenn ich eine 2. instanz meines dialoges erstelle und von dort auf meine member-funktion zugreife.abgesehen davon würde die funktion die werte in die listbox meiner 2. instanz schreiben... davon würd ich am Bildschirm dann **aber nix erst sehen
Auf m_pMainWnd kann ich aber auch ned zugreifen, weil diese wieder in CWinThread eingebaut ist. selbiges problem ich kann auf keine instanz von CWinThread zugreifen.
(von meiner global definierten funktion halt)und ins mfc forum hab ichs gegeben, weil des halt nur bei meiner dialogklasse so bled is dass ichs kein 2.mal instanzieren kann weils sonst den linker streut.
wenn ich mich irre: tschuldigebitte verschieben.**
-
*hochschieb*
weiß da echt keiner was?
-
Eine normale nicht-statische Member-Funktion braucht ein Objekt, sonst weiß sie nicht, auf was sie angewendet werden soll. Dein Objekt ist ja aber offenbar schon da, Du brauchst doch nur noch den Zeiger darauf. Ich weiß nicht, ob ich das richtig verstehe ...
Vielleicht hilft:
CWnd* AfxGetMainWnd( );Also:
AfxGetMainWnd( )->MemberFunction(...);Falls nein, dann benutze Dein Dialog-Objekt:
dlg.MemberFunction(...);[ Dieser Beitrag wurde am 27.09.2002 um 23:45 Uhr von Erhard Henkes editiert. ]
-
yeah es geht dankeeeeeeee
CFlashDlg *cDlg; cDlg=(CFlashDlg*)AfxGetMainWnd(); cDlg->SetText((CString)logstr);
-
Na das war ja eine schwere Geburt. Aber Hauptsache geschafft!
Schau Dir mal mein Kap. 7 im MFC-Teil an (Doc/View/SDI ...). Da findest Du wichtige Zusammenhänge, wie man von einer Klasse auf die andere zugreift.Das ist ein wichtiger OOP-Baustein der MFC.
-
CFlashDlg *cDlg; cDlg = (CFlashDlg*) AfxGetMainWnd(); cDlg->SetText( (CString) logstr );
Ich möchte hier noch einen anderen Aspekt diskutieren, der mich bewegt. In der Windows-Programmierung findet man weitgehend type castings im alten C-Stil (siehe oben). Sollte man hier den neuen C++-Stil fordern, also "funktional" oder gar mit diesem häßlichen static_cast<type>(expression). Wie wird das hier gesehen? Gibt es hierzu einen grundlegenden Artikel im Internet?