Auslesen von Daten aus einem übergeordneten Dialog bzw. Klasse
-
So, und wieder ein Problem... Also ich möchte z.B. Text auslesen und zwar aus einem geöffneten Dialog, der dann bereits wieder geschlossen wird und dann ausgewertet wird. Hier erstmal der Quelltext:
#include "stdafx.h" #include "SIProj.h" #include "PropPageDlg.h" #include "PropPageDlg1.h" #include "PropPageDlg2.h" #include "PropPageDlg3.h" #include "SIProjDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif // weitere Quelltexte, unwesentlich zum Problem // ... void CSIProjDlg::OnProgrammEinstellungen() // durch einen Button { // Obj. erstellen CPropertySheet cPropertySheet("Einstellungen"); // Obj. der Dialogklassen erstellen CPropPageDlg cDlg; CPropPageDlg1 cDlg1; CPropPageDlg2 cDlg2; CPropPageDlg3 cDlg3; // Hinzufügen zum PropertySheet cPropertySheet.AddPage(&cDlg); cPropertySheet.AddPage(&cDlg1); cPropertySheet.AddPage(&cDlg2); cPropertySheet.AddPage(&cDlg3); // Sonstige Einstellungen cPropertySheet.m_psh.dwFlags |= PSH_NOAPPLYNOW; // kein Button "Übernehmen" // PropertySheet anzeigen "Einstellungen" cPropertySheet.DoModal(); CString cstrData; cDlg3.m_IDC_EDIT1.GetWindowText(cstrData); // *** hier befindet sich das Problem, wobei ich nicht weiß warum?! MessageBox(cstrData); }
An der markierten Stelle liegt das Problem:
cDlg3.m_IDC_EDIT1.GetWindowText(cstrData);
cDlg3 = ein Dialog
m_IDC_EDIT1 = eine Komponente auf dem Dialog, ein EditFeld
GetWindowText(cstrData) = die Funktion zum Auslesen von TextIch weiß nicht warum da ein Problem entsteht?! Der Fehler tritt nur auf, wenn m_IDC_EDIT1 vom Typ CEdit ist, wenn es vom Typ CString ist dann würde es funktionieren, warum? Ich brauche aber das Objekt CEdit! Kompiliert wird es einwandfrei. Kann mir jemand helfen? Wäre sehr dankbar!!!
Cu CaseModder
-
Du erstellst Deine Dialoge, aber zeigst sie nicht an.
Dann willst Du auf ein Fenster (CEdit) zugreifen, was noch nicht erstellt wurde, dabei krachts.
Wenn es ein String ist, kein Problem ist einfach leer.
Nachdem Du Dein cDlg3 anzeigen lässt, sollte es wohl keinen Fehler geben.