Zum Inhalt springen

Wert einer int-Variable in anderem Dialog


Comroader

Empfohlene Beiträge

Hallo,

Ich hab schon wieder ein Problemchen ich möchte auf den Wert einer int-Variable zugreifen. Ich weis der Variable in einem Dialog einen Wert zu ,brauch dann aber im anderen Dialog den Wert der Variable und will danach die Variable wieder auf 0 setzen.

Muss ich vielleicht die Variable in die Klasse einfügen ???

Bitte um schnelle Hilfe !!!

Danke.

P.S:Benutz die MFC.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Servus!

Das kommt darauf an von wo deine dialoge aufgerufen werden!

Also, mal angenommen du hast 2 dialoge:

CDialog1Dlg und

CDialog2Dlg

Der erste Dialog(CDialog1Dlg) ist auf dem Bildschirm,

vom ersten Dialog rufst du den 2ten auf.

dann schreibst du ja


CDialog2Dlg dlg;

dlg.DoModal();

oder so ähnlich. Um jetzt eine Variable zu übergeben, musst du im 2. Dialog eine Membervariable anlegen, z.B.
int m_nWert;
diese muss natürlich "public" sein! Um nun die Variable zu ändern, schreibst du einfach:

CDialog2Dlg dlg;

dlg.m_nWert = 20;

dlg.DoModal()

Zack, nun ist die Variable geändert, wenn du nun vom 2ten dialog, wärend der offen ist, im 1.ten was ändern willst, ist das erweng komplizierter: Also, leg im 2.ten Dialog einen Pointer vom Typ CDialog an:
CDialog * m_pDialog;
Nun beim aufruf deines 2ten Dialogs, übergibst du einen Zeiger auf den 1ten Dialog:

CDialog2Dlg dlg;

dlg.m_pDialog = this;

dlg.DoModal();

Der This Zeiger, den jede Klasse besitzt ist ein Pointer auf die eigene Klasse, also in diesem Fall ein Zeiger auf CDialog1Dlg. Wenn du nun im ersten eine Membervariable ändern willst, geht das vom 2ten folgendermassen:

((CDialog1Dlg*)m_pDialog)->m_nWert = 100;

Die Variable m_pDialog ist ja zu Beginn eine Variable des Typs CDialog, nun Castest du sie auf CDialog1Dlg, du kannst statt einer CDialog-Variable auch gleich eine CDialog1Dlg Membervariable im 2.ten Dialog anlegen. Dann entfällt das Casten, musst nur noch
m_pDialog->m_nWert = 100;

eingeben, tja viele Wege führn nach Rom!

Ich hoff mal des war etz nicht zuviel ;D

bye

JO;)

Ps. Solltest natürlich den Pointer im Konstruktor deines 2ten Dialogs auf NULL setzen! :rolleyes:

Link zu diesem Kommentar
Auf anderen Seiten teilen

Man kann auch im Konstruktor des 2. Dialogs einfach ne Referenz auf den zu ermittelnden Wert mitgeben. Wenn man ganz schnell arbeiten muss, gibts noch ne "unsaubere" Variante, und zwar kann man nach dem der Dialog2 zerstört wurde ja trotzdem noch auf seine Membervariablen zugreifen ( nur bei public ). Einfach "int gewuenschterWert = Dialog2Instanz.gewuenschteMemberVariable;" .

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi!

Warum ist denn die Methode unsauber?

Ich weis nicht was du unter "zerstört" verstehst,

ich denk mal du meinst, wenn er geschlossen ist,

na und?

Das Objekt der Klasse TestDlg ist doch noch da oder?

Und DoModal() war ja nur eine kleine funktion der

Klasse von dem das Objekt(Der Dialog) abgeleitet wurde.

Oder?

sers

JO

Link zu diesem Kommentar
Auf anderen Seiten teilen

Unsauber weil es nicht der Standdardweg ist, bei 2 Dialogen kann aber eigentlich nicht viel passieren, aber Du weisst ja nie was nach dem schließen eines Dialoges noch durchlaufen wird, wenn es eigene kleine Projekte sind dann isses egal, bei Code an dem mehrere arbeiten würde ich das net so machen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...