Dialogbasierende Anwendung



  • Hi habe eine Dlgbasierende Anwendung in der rufe ich mit DoModal() ein 2 Dialogfenster auf meine Frage jetzt wie kann ich in den 2 Fenster auf Variabeln bzw. Funktion des ersten Fensters zugreifen?

    MfG Hoffi



  • du übergibst die variablen an das 2 fenster
    so ähnlich wie mit dem öffnen des zweiten fensters



  • Kann man nicht irgendwie mit ein Pionter auf das erste Fenster drauf zugreifen?



  • Schreib Dir in der 1. Klasse Get-Methoden in den Du Deine Variable zurückgibst. Die Get-Methoden rufst Du dann in der 2. Klasse auf.

    CDialog1 dlg1;
    CString VariableDlg2 = dlg1.GetVariableDlg1();
    

    In die Getfunktion schreibst Du

    return VariableDlg1;
    

    Hoffe es hilft Dir.



  • Wenn ich das so mache erzeuge ich doch nur eine neue Instanz meiner Dialogklasse in der dann nicht die aktuellen Werte des ersten Dialogfeldes stehen.



  • class CDialog1
    {
    public:
        CDialog* GetDialogPointer() { return this; }
        void Test()
        {
            AfxMessageBox("bla");
        }
    };
    
    // blablabla
    
    class CDialog2
    {
    public:
    
        CDialog2(CDialog* pDialog1)//hier fehlen natürlich noch andere parameter und der basisklassenkonstruktor
        {
            m_pDialog1=pDialog1;
            m_pDialog1->Test();
        }
    protected:
        CDialog1 *m_pDialog1;
    };
    
    // blabla....
    
    //irgendwo im code.....
    CDialog1 dlg1;
    CDialog2 dlg2(&dlg);
    

    .......... könnte sowas funzen ????



  • class CDialog1
    {
    public:
        void SetPointer(CDialog2* pDialog) { m_pDialog2=pDialog2; }
        void Test() { AfxMessageBox("Dialog2"); }
    private:
        CDialog2 *m_pDialog2;
    };
    
    class CDialog2
    {
    public:
        void SetPointer(CDialog1* pDialog) { m_pDialog1=pDialog; }
        void Test() { AfxMessageBox("Dialog2"); }
    private:
        CDialog1 *m_pDialog1;
    };
    
    BOOL CMyApp::InitInstance()
    {
        CDialog1 dlg1;
        CDialog2 dlg2;
        dlg1.SetPointer(&dlg2);
        dlg2.SetPointer(&dlg1);
    
        dlg1.DoModal(); 
        dlg2.DoModal();
    
        return TRUE;
    }
    

    das könnte auch funktionieren !
    Du musst dir halt noch methoden zum übergeben deiner Variablen schreiben !


Anmelden zum Antworten