Ich werde noch verrückt....... [UND ES GEHT WEITER :/]
-
Nicht mal sowas bekomme ich zu sehen:
if(m_dSchemesList.DoModal() == IDOK) { m_strFilelist = "123"; UpdateData(FALSE); }
-
was bekommst du nicht zu sehen?
du musst in deinem CMEDAKODlg oben die header includieren von
SchemesListDlg.h
dann musst du an der entsprechenden stelle dies hier machen!
copy und paste bitte!
CSchemesListDlg dlg; // hier deklarierst du den neuen unterdialog ( speicher anfordern ect. dlg.SetVariable(m_strFilelist); // hier übergibts du die variable an den unterdialog dlg.DoModal; // hier wird der Dialog dann aufgerufen und du siehst ihn!
In deinem Unterdialog musst du eine Memberfunkion schreiben ( public ) die das macht
void CSchemesListDlg::SetVariable( CString &_str ) { m_meineUnterdialogVariable = _str; }
Ich würde diese Variablen immer mit einer Setter Funtkion übergeben. Kannst auch mit einer Setter gleich alle übergeben
oder du kansnt auch dies mit einem überlagen konstruktor machen
z.b.
CSchemesListDlg dlg( str1, str2, str3);
Und sag jetzt nicht wieder nur
"es geht nicht"
sag auch was für fehlermedlunge ect.
-
newkid
-
PS:
woher hast du den schmarn eigentlich her?
if(m_dSchemesList.DoModal() == IDOK)
{
m_strFilelist = "123";
UpdateData(FALSE);
}Das denkt sich nicht mit
Mein Hauptdialog heißt: CMEDAKODlg
Der Unterdialog heißt: CSchemesListDlgDie, zu transferiende, Variable aus CMEDAKODlg heißt "m_strFilelist".
denn
1. was ist m_dSchemesList? Hast du sicher eine membervariable extra dafür angelegt?
2. du willst den wert von m_strFilelist übergeben, aber du schreibst den stringwert "123" rein wenn der dialog OK zurückgibt. bist du sicher das du das willst?
3. was haben alle anfänger immer mit dem UpdateData immer? Lies nochmal in deinem "intranet" durch was da zu UpdateData steht. Das brauchst du eher selten ( ausser du arbeitest extrem mit editboxen )
-
isabeau2 schrieb:
newkid
huh?
-
Hi Leute,
danke für alle Tipps.
Mittlerweile läuft's.....
[m_dSchemesList ist/war die Member-Variable für meinen "Unter-"Dialog.]
Nichtsdestotrotz ich sehe nun meine Werte und freue mich.
Gruss
kk3003
-
void CSchemesListDlg::SetVariable( CString &_str ) { m_meineUnterdialogVariable = _str; }
Ich habe in der Klasse des Unterdialoges eine Memberfunktion in folgender Form angelegt:
Funktionstyp: void
Funktionsdeklaration: SetVariable
Zugriffsstatus: public
Weder statisch noch virtuell aktiviert-> Funktion ist erzeugt worden
Nun fülle ich Sie mit Leben:
void CSetWeb::SetVariable(CString &m_sPathExe) { m_sTEST = m_sPathExe; MessageBox(m_sTEST); }
-> Hauptdialogvariable [m_sPathExe] ist als CString in der Hauptdialogklasse definiert (Member-Variable) und gefüllt. MessageBox funkt. dort.
-> m_sTEST als CString im Unterdialog (Member..)Fehlermeldung:
Kompilierung läuft... SetWeb.cpp *\SetWeb.cpp(64) : error C2511: 'SetVariable' : Überladene Member-Funktion 'void (class CString &)' nicht in 'CSetW eb' gefunden *\setweb.h(13) : Siehe Deklaration von 'CSetWeb' Fehler beim Ausführen von cl.exe. MEDAKO.exe - 1 Fehler, 0 Warnung(en)
-
Hi,
vielleicht hat jemand kurz Zeit und kann mir helfen?!
*push*
Danke im voraus
Gruss
kk3003
-
Warum so kompliziert?
Übergib deine Variable doch einfach über den Konstruktor deines UnterdialogsKonstrukor Unterdialog
class CDlgUnterdialog
{
CDlgUnterdialog(CString Maindlgvar);
CString strMainDlgVar;
};CDlgUnterdialog::CDlgUnterdialog(CString Maindlgvar)
{
strMainDlgVar = Unterdlgvar
}Anlegen des Objekts deines Unterdialogs
dlg = CDlgUnterdialog(Hauptdlg - Var)
Gruß CP
-
kk3003 schrieb:
Fehlermeldung:
Kompilierung läuft... SetWeb.cpp *\SetWeb.cpp(64) : error C2511: 'SetVariable' : Überladene Member-Funktion 'void (class CString &)' nicht in 'CSetW eb' gefunden *\setweb.h(13) : Siehe Deklaration von 'CSetWeb' Fehler beim Ausführen von cl.exe. MEDAKO.exe - 1 Fehler, 0 Warnung(en)
hast du denn in der CSetW.h auch sowas stehen?
class CSetW { public: SetVariable(CString &m_sPathExe); private: CString m_sTEST; };
Die Meldung heist nämlcih soviel wie: "Funktion 'SetVariable(CString irgendwas)' gibt es nicht in dieser Klasse". Das kann bedeuten das du bei der Deklaration in der .h Datei z.B. nur
class CSetW { public: SetVariable(); private: CString m_sTEST; };
stehen hast.
-
Hi,
schon mal Danke für die Antworten.
Ich teste die Lösungen mal und melde mich dann wieder...
Gruss
k3003
-
Hi,
ich habe jetzt mal versucht beide Lösungen umzusetzen und bin
kläglich gescheitert...Das kann doch nicht so kompliziert sein, Variablen von Klassen miteinander bekannt zu machen... ?!
Vielleicht hat jemand ein Online-Tutorial zur Hand oder ein Buchtipp?!
Ich komme da nicht weiter.... ich schiebe auch gerne mal mein Projekt
hoch... damit ich weiterkomme.Danke im voraus
Gruss
kk3003
-
Versuchs mal unter: www.mut.de -> Leseecke.
Da gibt es zwei freebooks 1.) Visual C++ in 21 Tagen und 2.) C++ in 21 TAgen, vielleicht findest du ja da was:)
-
Hi,
danke für den Tipp. Das "VC++ in 21 Tagen"-Buch liegt in gedruckter Form
vor mir. Für den Einstieg war es auch garnicht schlecht.Das betreffende Problem finde ich aber leider nicht oder es wird garnicht erwähnt...
Gruss
kk3003