Variable von einen an den anderen Dialog übergeben.
-
Hi,
ich habe ein Problem mit Dialogen unter MFC. Wenn ich in meinem Programm ein Dialog zum konfigurieren öffne um dort zB ein Logfile auszuwählen möchte ich den Pfad an eine andere Klasse(CRegCleanerDlg) zurückgeben.
Hier ist code dazu:
void CKonfig::OnBnClickedFileSearch() { CRegCleanerDlg m_cRegCleanerDlg(NULL); CString szFileName, szFilePath; OPENFILENAME ofn; CFileDialog cfi(true, 0, 0, OFN_CREATEPROMPT|OFN_FILEMUSTEXIST|OFN_EXPLORER, 0, 0, 0); ofn.Flags = OFN_CREATEPROMPT | OFN_HIDEREADONLY | OFN_PATHMUSTEXIST; cfi.DoModal(); //szFileName = cfi.GetFileName(); szFilePath = cfi.GetPathName(); SetDlgItemText(IDC_TEXTPATH, szFilePath); m_cRegCleanerDlg.SetLogPath(szFilePath); }szFilePath soll nun an CRegCleanerDlg::SetLogPath() weitergegeben werden.
void CRegCleanerDlg::SetLogPath(CString strPath) { m_strLogFilePath = strPath; }Dies funktioniert soweit auch. Das problem dabei ist, wenn ich den konfigurationsdialog schließe, steht auf einmal auch nichts mehr in der public variable m_strLogFilePath drin.
Was muss ich machen, dass es funktioniert?
Danke schonmal im voraus.
-
void CKonfig::OnBnClickedFileSearch() { CRegCleanerDlg m_cRegCleanerDlg(NULL); ... m_cRegCleanerDlg.SetLogPath(szFilePath); }Du hast ein lokales Objekt angelegt und dessen Log-Pfad gesetzt - am Ende der Funktion wird dieses Objekt (und mit ihm der Log-Pfad) beseitigt. Das eigentlich interessante Objekt liegt irgendwo anders im Programm und bekommt von all dem nichts mit.
(übrigens ist die Zuweisung "ofn.Flags=..." auch sinnlos - der CFileDialog hat sein eigenes OPENFILENAME-Objekt, das mit deinem ofn absolut nichts zu tun hat)