dialogfenster liefert Daten, wohin damit?



  • Hallo,

    ich habe ein Dialogfenster mit einer eigenen Klasse cdialog1.
    In diesem gebe ich in ein Textfeld einen Text ein. OK.

    Jetzt meine Frage: Der Text wird ja in einer Variablen abgelegt, die ich mit dem Klassen-Assistent erstellt habe. Wenn ich jedoch den Inhalt dieser Variablen in einer Document-Funktion verwenden will, brauche ich doch einen Zeiger auf die Document-Klasse. den besorge ich mir mit GetDocument.

    Wie besorge ich mir aber einen Zeiger auf eine Klasse, die ich selbst erstellt habe, damit ich deren Funktionen nutzen kann?
    Oder habe ich da einen Denkfehler?
    ich habe eine Klasse CKfz, in welcher ich Daten von Autos speichern möchte, die ich dann mittels Serialisierung abspeichern will. Wer kann mir hier helfen?
    Vielleicht ein wenig Quellcode?? Wäre lieb. Danke

    Bussi Anja 😮



  • Moin,

    Willst du jetzt nen zeiger und von CKfz auf deine Basisklasse zugreifen dann machste das so (sonst weiter unten):

    du erstellst in der abgeleiteten klasse (CKfz) eine variable vom typ "CDialog*" und überschreibst die funktion "SetParent()"

    also in die header-datei von CKfz:

    public:
        void SetParent(CDialog* pWnd);
    //und 
    private:
        CDialog* m_pWnd;
    

    und in die *.cpp

    void CKfz::SetParent(CDialog *pWnd)
    {
        // Elementzeiger setzen
        m_pWnd = pWnd;
    
    }
    

    nun musste noch in deine basisklasse beim erstellen eines neuen CKfz-objektes oder in die OnInitDialog()

    CKfz Kfz = new CKfz();  //in klammern kommen eventuell daten für den Konstruktor
    Kfz.SetParent(this);
    

    fertig!!!

    um von CKfz auf die Basisklasse zugreifen zu können

    ((CBasisKlasse*)m_pWnd)->m_Variable
    

    CBasisKlasse steht für den namen der Bassisklasse.
    m_Variable ist eine Variable der Basisklasse (du kannst natürlich auch dort ne funktion aufrufen).

    //////////////////////////////////////////////////////////////////////////////
    //////////////////////////////////////////////////////////////////////////////

    Oder willst du nur von deiner Basisklasse auf Variablen und Funktionen von CKfz zugreifen:

    //Diesen Code in die Dialogfeldklasse
    CKfz Kfz;
    int x = 10;
    Kfz.m_Variable = 10;
    Kfz.FunktionX();
    

    m_Variable - Beliebige Variable aus der CKfz-klasse (im beispiel ne integer)

    FunktionX - Funktion aus CKfz (Parameter übergabe und return möglich)

    auf Elemente von private oder protected kannst du natürlich nicht zugreifen (nur über umwege)

    mfg, hoffe das richtige war dabei



  • Danke Danke !!!

    Wirklich ein tolles Forum hier.

    Anja (Bussi)


Anmelden zum Antworten