Globale Variable oder CDoc?
-
gut, aber wie kann ich auf die GET bzw. SET funktion der jeweils anderen zugreifen?
// ***.cpp class *** { private: ... public: void movedown(); void draw(); ... }s;
// MainFrame.cpp void CMainFrame::OnKeyDown() { ... s.movedown; }
// asdfView.cpp void CasdfView::OnDraw(CDC* pDC) { ... s.draw(); }
nehmen wir an ich HÄTTE in CasdfView eine Memberfunktion Get(), wie würde ich die dann aufrufen???
mfg (c)h
-
ups, hab den letzten beitrag davor nicht gesehen.
Ich meinte mit global, dass die Variable global ebn angelegt wird, und im gesamten Programm angesprochen werden kann.GetActiveDocument und AfxGetMainWnd werde ich jetzt mal versuchen...
mfg (c)h
-
Pack die Variable bitte mal als public in die Klasse, auf die deine Wahl dann fällt.
Weil dann geht meine Lösung von oben - mit global wohl eher nicht.
-
gut...
meine Klasse ist in der MainFrm.h
ich versuchte das MainFrame anzusprechen. Du hast etwas von Casten gesagt - Nach welchen Typ?void CSNAKE3View::OnDraw(CDC* pDC) { CWnd* a=AfxGetMainWnd(); // casten nach welchen typ? }
mfg (c)h
-
Nach CMainFrame*, denn darauf willst du ja zugreifen.
-
dachte ich mir auch... nur:
void CSNAKE3View::OnDraw(CDC* pDC) { CMainFrame* a=(CMainFrame*)AfxGetMainWnd(); }
error C2065: 'CMainFrame' : nichtdeklarierter Bezeichner
mfg (c)h
-
CMainframe* pFrame =dynamic_cast<CMainframe*>(AfxGetMainWnd()); Assert(pFrame)
So!
-
Dann musste in deiner View.cpp noch MainFrm.h includen.
Also einfach ganz oben hin:
[cpp]#include "MainFrm.h"[/cpp]
Edit: Oh, dynamic_cast hab ich ja no nie benutzt... Gleich mal ausprobieren...
-
Und für das von Polofreak musst du in den Projekteinstellungen noch RTTI einschalten.
Es ist aber die sauberere Lösung.
-
static_cast tuts auch. du weißt ja von welchem typ der zeiger ist.
-
DANKE!!! Funktioniert!
(habs aber ohne dynamic-cast gemacht - die include hat geholfen)mfg (c)h