Probleme beim Übergeben der Variablen von Dialog zu Dialog !
-
Hi Leute !
Ich hab einen Hauptdialog und hab dessen OnInitDialog bearbeitet. Ich hab nur folgendes hinzugefügt:
// TODO: Hier zusätzliche Initialisierung einfügen CSessionDlg dlgSession; dlgSession.DoModal();Natürlich hab ich auch die entsprechende Header Datei meines zweiten Dialogs eingebunden.
Wenn ich die Anwendung jetzt starte, kommt der zweite Dialog wie gewollt und ich kann eine Session ID eingeben ( Wird benötigt um später bestimmte Websiten aufzurufen ! ). Dem Edit Feld hab ich eine Member Variable zugewissen vom Typ CString ( m_strSessionID ). Danach klick ich auf Ok und der Dialog beendet sich und der Hauptdialog erscheint. Da hab ich einen Button der die zuvor eingebene Session ID anzeigen soll.
void COgameBotDlg::OnBnClickedShow() { CSessionDlg dlgSession; CString strTemp; strTemp.Format("%S", dlgSession.m_strSessionID); MessageBox(strTemp, "Test", MB_OK); }Wenn ich jetzt auf den Button "Show" klicke, wird mir eine leere MSG Box angezeigt
Was mach ich falsch?Ich hoffe ihr könnt mein Problem nachvollziehen!
Danke im Vorraus.
Lg
PS: Hab .NET 2003
-
void COgameBotDlg::OnBnClickedShow() { CSessionDlg dlgSession; // <--------------------------------- Das da... CString strTemp; strTemp.Format("%S", dlgSession.m_strSessionID); MessageBox(strTemp, "Test", MB_OK); }...ist ein ganz neues, anderes Objekt und hat so ziemlich nix mit dem Objekt zu tun, mit dem du dlgSession.DoModal(); aufrufst, ausser, dass es von der selben Klasse ist.
Du könntest deinem Hauptdialog auch noch eine Membervariable spendieren, in der du dir den Wert merkst. Ich nenne die mal m_strID, das wäre dann so:
CSessionDlg dlgSession; dlgSession.DoModal(); m_strID = dlgSession.m_strSessionID;und in deiner Funktion OnBnClickedShow() dann
strTemp.Format("%S", m_strID);Ich kenne zwar dein Programm nicht, aber wäre es nicht komfortabler, den Wert gleich anzuzeigen und nicht erst nach einem Buttonklick ? Dann könntest du dir die neue Membervariable sparen, die Funktion OnBnClickedShow() ebenfalls und müsstest nur noch schreiben
CSessionDlg dlgSession; dlgSession.DoModal(); SetDlgItemText(ID_VON_DEINEM_EDITFELD, dlgSession.m_strSessionID);P.S.:
alles ungetestet und von .NET 2003 habe ich auch keine Ahnung, aber vielleicht klappt es ja...
-
Hi!
Danke. Das mit dem Button "Show" ist nur zu Testzwecken gewesen, trotzdem gleich mal danke für einen weiteren Lösungsvorschlag
!Funktioniert.