MFC: Globale Variablen mit EditBox verbinden

enigma86

Grünschnabel
Guten Tag zusammen,

ich habe eine Dialogbox in dem per TabControl ein paar andere Dialogboxen eingebunden sind. In einigen sind EditBoxen.

Ich habe in meiner Hauptklasse globale Variablen definiert die auch im Folder "Globals" angezeigt werden.

Problem.
Ich weiß nicht wie ich die EditBoxen mit den globalen Variablen verbinden kann :(

Hat da jemand eine idee?

AndyC
 
Was sind das für Variablen und was meinst du mit verbinden? Globale Variablen kannst du mit
C++:
extern name_der_variable;
in der betreffenden Quellcodedatei bekannt machen und dann normal benutzen.

Gruß
MCoder
 
Hi MCoder,

ja, so habe ich meine Variablen in meiner Funktion auch bekannt gemacht.

Ich beschreibe mal genauer:

Ich habe eine EditBox. Dieser kann ich mit dem Klassenassistenten eine Variable "zuweisen". Leider nur eine neu zu erstellende Klasseninterne Variable, keine existente globale Variable.

Zur Verdeutlichung:

DialogBoxB und DialogBoxC haben beide eine Klasse und sind per TabCcontrol in DialogBoxA eingebunden.

In DialogBoxB ist eine EditBox.
In DialogBoxA ist ein Button den ich mit "OnButton" ansteuere.

In der Funktion "OnButton" will ich, das das, was in der EditBox steht z.B. per MessageBox angezeigt wird.

So...hm...ich hoffe es ist nicht mehr unklar was ich möchte. Thx ^^

Grüße
Andy
 
Hallo,

ich nehme mal an, du hast in DialogBoxA einen Member für das TabControl und das wiederum hat Member für die einzelnen Tab-Dialoge (DialogBoxB, DialogBoxC). Dann solltest du eigentlich in DialogBoxA keine Probleme haben, den Variableninhalt abzufragen:
C++:
m_TabControl.m_DialogBoxB.UpdataData(TRUE);
AfxMessageBox(m_TabControl.m_DialogBoxB.m_EditBoxVariable); // m_EditBoxVariable muss natürlich vom Typ "CString" sein
Gruß
MCoder
 
Hi MCoder,

Danke erstmal für die Antwort, allerdings will das bei mir nicht ganz klappen.

Mein TabControl heisst "m_cTabCtrl".
In meinem Konstruktor steht:
Code:
m_tabellenSeite[0]=new CSeite1;
m_tabellenSeite[1]=new CSeite2;
....
m_Seitennummern=...;

In meiner Initialisierung habe ich:
Code:
m_aktuelleSeite=0;
m_tabellenSeite[0]->Create(IDD_SEITE1, this);
m_tabellenSeite[1]->Create(IDD_SEITE2, this);
...
m_tabellenSeite[0]->ShowWindow(SW_SHOW);
m_tabellenSeite[1]->ShowWindow(SW_HIDE);

In den child-Dialogen sind die Klassennamen "CSeite1", "CSeite2" etc.

Teoretisch müsste ich jetzt mit "m_cTabCtrl.m_tabellenSeite[1].m_Variable" auf meine Variable zugreifen können. Der Compiler sagt mir aber "left of "m_variable" muss klasse/struktur/etc sein".

Grüße
Andy
 
Zuletzt bearbeitet:
Praktisch musst du beachten, dass du die Seiten als Zeiger speicherst, also muss der Zugriff so aussehen:
C++:
m_cTabCtrl.m_tabellenSeite[1]->m_Variable
Gruß
MCoder
 
Hi MCoder,

mein Compiler sagt mir: "m_Variable ist kein member von CDialog".

Dabei ist die BaseClass von "CSeite2" eben "CDialog" !?

Gruß
Andy
 

Neue Beiträge

Zurück