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 Text

    Ich 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.


Anmelden zum Antworten