Datenaustausch zwischen Dialogen mit CDataExchange!
-
Hallo ihr lieben
Ich muss zur Zeit mit der MFC arbeitenund bräuchte mal wieder hilfe!
Ich habe einen Dialog den ich per doModal aufrufe!
Jetzt will ich die daten vom Dialog bekommen!
Geht das per DoDataExchange wenn ja welchen Constructor brauch ich für CDataExchange? Die MSDN schweigt sich darüber aus.
ODer kann ich die Membervariable auch über DoModal irgendwie wieder zurückbekommen?
Hab hier im Forum nix gefunden!
Über hilfe wäre ich dankbar!
Cya stealth00
-
Hallo,
Um DoDataExchange musst Du Dich gar nicht kümmern, wenn Du den Klassen-Experten verwendest, um Deine Dialogfelder mit Variablen zu verbinden.
Angenommen, Du hast einen Dialog mit 2 Eingebafeldern. Für beide legst Du CString-Variablen an (über den Klassen-Experten). Dann rufst Du den Dialog folgendermaßen auf:
CMyDialog dlg; // Dialogobjekt erzeugen. dlg.m_sFeld1 = "Text1"; // Die Eingabefelder initialisieren. dlg.m_sFeld2 = "Text2"; if( dlg.DoModal() == IDOK ) { // Nun die vom Anwender eingegebenen Werte verwenden: CString sGesamt = dlg.m_sFeld1 + dlg.m_sFeld2; ... }
Gruß,
Andreas
-
du bist ein schatz ags *knuddel*
THX IHR!
-
UNd gleich ne anschlussfrage:
Ich hab einer KomboBox jetzt eine Variable zugeteilt, m_Combo1
wenn ich jetzt mache m_combo1=dia.m_edit1;
passiert nichts.
Muss ich die Kombobox erst aktualisieren?
Ich probier noch ein bisschen rum!
-
Problem gelöst und ein anderes gefunden.
m_Charakter das Kombofeld ist vom Typ control.
Wenn ich jetzt mit m_Charakter.AddString("TEXT"); was einfügen will stürzt das Programm sofort ab???
Kann mir da einer nochmal helfen??
-
Es wäre wesentlich einfacher, wenn Du auch sagtest, welche Datentypen Du überhaupt für Deine Variablen verwendest
Ich gehe mal von folgendem aus:
CComboBox m_Combo1;
CEdit m_Edit1;Dann machst Du folgendes:
CString sText;
m_Edit1.GetWindowText(sText);
m_Combo1.SetWindowText(sText);Gruß,
Andreas
-
Original erstellt von stealth00:
Problem gelöst und ein anderes gefunden.
m_Charakter das Kombofeld ist vom Typ control.
Wenn ich jetzt mit m_Charakter.AddString("TEXT"); was einfügen will stürzt das Programm sofort ab???
Kann mir da einer nochmal helfen??Mit welcher Fehlermeldung??? So ohne etwas genaueres kann ich gar nichts sagen
-
Nunja ich muss sagen ich bin ein totalen Newbie normalerweise prog ich mit WinApi und OGL oder Dx deswegen ist MFC totales Neuland für mich!
Ich benutz das "Kombinationsfeld" vom Ressourceneditor!
Im Klassenassistent hab ich diesem Kombinationsfeld eine Varible vom Typ Control zu gewiesen!
Das problem ist jetzt:
Egal was ich mache, ob ich Addstring("Hello WOrld") oder ob ich SetWindowText`("Hello world"); mache das programm frazt ab mit einer fehlermeldung in der afxwin.inl oder so
bzw jetzt in der winocc.cpp
Debug Assertion failed!
Ich versuch noch ein bisschen rum!
-
Du darfst die Steuerelemente erst dann verwenden, nachdem die Hanldes der entspr. Fenster auch erzeugt worden sind, also erst NACHDEM Create() aufgerufen wurde!
Das geht in (danach) der Behandlung des Ereignisses WM_CREATE. Der Klassen-Experte erzeugt die Funktion OnCreate(). Nachdem die Basisklassen-Version von OnCreate() aufgerufen wurde, kannst Du die Steuerelemnte verwenden.
Gruß,
Andreas
-
Hmm, daran könnte es liegen.
Aber ich habe ein Problem. Diese Combobox befindet sich in einer CPropertyPage..
Sprich ist eine RegistrierkartenPage!
Diese Klasse besitzt kein OnCreate??
Ich hab es gerade woanders probiert da ging es!
Vielleicht erkläre ich mal die ganze aufrufe:
Ich starte ein Programm/Dialog.
Dort klicke ich auf einen button der eine CPropertySheet aufruft der 2x CPropertyPage enthält.
Diese enthalten 2 Comboboxen und 2 Buttons die jeweils Dialoge aufrufen in dennen man in ein Edit fenster namen eingeben kann.
Wenn das edit fenster geschlossen wird, soll in den Comboboxen der Name auftauchen..Das ist echt zum verzweifeln oder ags?
WEnn das so weitergeht programmiere ich das mit DX
-
So auf anhieb kann ich jetzt auch nichts mehr sagen
Muss später noch mal darüber nachdenken...
Aber vielleicht solltest Du mit Borland C++ (OWL) oder dem C++Builder arbeiten. Da gibt es diese Probleme nicht
Gruß,
Andreas
-
witzbold
Hab zwar ne Schülervergünstigung trotzdem hab ich keinen Geldscheisser
-
ich mach mal ein neuen Thread auf.
Sind ja schon ziemlich offtopic geworden im bezug aufs thema