Globale Variablen im MFC

polocpp

Grünschnabel
Hallo Leute,

ich kämpfe hier mit Visual C++ 6.0 rum. Ich haben einen Wert der in allen Fenstern verfürbar sein muss. Wie ich aus einem anderen Beitrag entnommen habe kann ich mit:
"
Definiere die benötigten Variablen als public Member der Klasse CMainFrame,
z.B.

Code:

CString m_strSpielerName;

Du kannst nun von jeder beliebigen Stelle im Programm darauf zugreifen:

Code:

((CMainFrame *)AfxGetMainWnd())->m_strSpielerName"

auf diesen Wert von überall aus zugreifen. Aber wie kann ich diesen Wert auch ändern?
Wenn ich diesen neu setze mit
((CMainFrame *)AfxGetMainWnd())->m_strSpielerName = neuerWert
bekomme ich beim öffnen eines anderen Fensters einen Absturz...Hier mache ich wohl etwas falsch!

Danke für alle Tips!

Gruß
polo
 
Du kannst auch auf theApp zugreifen. Das ist deine von CWinApp abgeleitete Klasse. Du musst nur im Header ein

extern CMyApp theApp

einfügen.
 
Hallo,

danke für die schnelle Antwort.

Wenn ich dann die Variable "sich" setzten will (CTestApp::sich = neuerWert), bekomme ich folgenden Fehler:

error C2597: illegal reference to data member 'CTestApp::sich' in a static member function

Was mache ich falsch?

DANKE
polo
 
Falls ich den Compiler richtig verstehe, dann rufst du eine nicht statische Variable in einer statischen Funktion auf, oder ?

Das geht natürlich nicht. Du müsstest z.B. die Variable CTestApp::sich auch static machen.
 
Hallo,

wenn ich das mache bekomme ich folgenden Fehler:

code.obj : error LNK2001: unresolved external symbol "public: static class CString CTestApp::sich" (?sich@CTestApp@@2VCString@@A)

...in der cope.cpp habe ich den Aufruf:
extern CTestApp theApp;


...ich glaub ich gebs auf...

polo
 
Zurück