Integer von einem Dialog in Textbos eines anderen Dialogs schreiben

Pyrolexxiales

Grünschnabel
EDIT: ( Es handelt sich um MFC in Visual C++ 6.0 )

Ich habe ein Problem, was mich seit Tagen zum Wahnsinn treibt. Ich habe im Internet keine lösung dafür gefunden, deswegen hoffe ich dass ich hier die Hilfe finde die ich verzweifelt suche

Problem:
Ich habe einen Dialog mit einem Eingabe-Button. Per Klick öffnet sich mit DoModal(); ein neuer Dialog mit einem Slider, ein Eingabefeld. Das Eingabefeld ist auf Zahlen reduziert und Schreibgeschützt. Per Slider kann man Werte zwischen 0 und 50 einstellen. Nun das Problem. Ich will diesen Integer-Wert in die Listbox schreiben, die sich in meinem Ausgangsdialog befindet. ich wandle den Integerwert in einen String um mit
Code:
string.Format( "%d", Integer );
(Habs auch mit "%i" versucht). Das alles funktioniert einwandfrei. Nun will ich diesen String in den Ausgangsdialog in die Listbox schreiben.
Code:
dlg.m_ctrlListBox.AddString( string );
und genau in dieser Zeile bekommt er einen "Debug Assertion Failed!". Ich habe das ganze um es zu testen mit einer Listbox versucht die sich in dem Dialog befindet den ich aufrufe. Funktioniert einwandfrei. Wieso kann ich ihn dann nicht in meinen Ausgangsdialog schreiben?

Das Programm ist nur ein Übungsbeispiel für mich um die Steuerelemente zu verinnerlichen. Hat also keinen höheren nutzen.

Danke im Voraus
Pyro
 
Zuletzt bearbeitet:
Hallo,

wie kommst du denn an das Objekt (dlg) des anderen Dialoges? Hier scheint das Problem zu liegen.

Gruß
MCoder
 
über
Code:
CDlgSliderDlg dlg; 

dlg.m_ctrlListBox...usw...

Objekt des Ausgangsdialogs
Damit erzeugst du ein neues Dialog-Objekt , das mit mit schon erzeugten CDlgSliderDlg nichts zu tun hat. Außerdem wird dadurch auch dieser Dialog und seine Controls noch nicht erzeugt, so dass der Absturz folgerichtig ist. Du musst dem Dialog mit der Textbox einen Zeiger auf den schon vorhandenen CDlgSliderDlg übergeben.

Gruß
MCoder
 
CDlgSliderDlg (ausgangsdialog)
CDlgEingabe( aufgerufener Dialog )

heißt also ich soll meinem CDlgEingabe einen zeiger auf CDlgSliderDlg übergeben?
 
Jetzt vllt ne kleine lästige frage. Wie mach ich das genau?

ich hab im internet nichts gefunden was mir da weiterhilft und mit meinen nerven bin ich auch langsam am ende. hoffe auf ein bisschen verständnis :(
 
Moin,

ungefähr so (ist VHIDT ;)):

C++:
CDlgSliderDlg( ausgangsdialog ) = mySliderDlg;
CDlgEingabe( &mySliderDlg ) = myEingabeDialog;

// der Konstruktor CDlgEingabe muss dann in etwa so aussehen:
// CDlgEingabe::CDlgEingabe( CDlgSliderDlg *myDlg )

Gruß
Klaus
 
Zuletzt bearbeitet von einem Moderator:
Zurück