Funktionsaufruf aus 2. Dialog



  • Hallo,

    Ich hab zwei Dialoge CParestDlg und PANsetup. Mit einem Button erstelle ich den den 2. Dialog nicht modal:

    void CParestDlg::OnBnClickedButtonPan()
    {	
    	// open dialog "PANsetup"
    	PANsetup* Psetup;
    	Psetup = new PANsetup();	
    
    	Psetup->port = m_serialport; //CString variable for PANsetup	
    
    	Psetup->Create(IDD_DIALOG_PANsetup, this);	
    	Psetup->ShowWindow(1);
    }
    

    Der neue Dialog wird auch erstellt und die Variable übertragen. Nun möchte ich durch drücken eines 2. Buttons im PANsetup Dialog eine Funktion (sendPAN1310Cmd) aus CParestDlg aufrufen und testweise etwas in die dortige Listbox eintragen.

    void PANsetup::OnBnClickedButtonReset()
    {
    	CString test, resetcommand = "01030c00";
    
    	CParestDlg cpdlg;
    
    	cpdlg.sendPAN1310Cmd(resetcommand,port);
    
    	test.Format("sendPAN1310Cmd(%s,%s)",resetcommand,port);
    	cpdlg.OListBox.AddString(test);	
    
    }
    

    Es passiert jedoch nichts. 😕
    Weder wird die gewünschte Funktion ausgeführt, noch etwas in die entsprechende Listbox geschrieben. Ich bekomme aber auch keine Exception 😞
    Mache ich etwas bei der Erstellung von cpdlg falsch, oder ist das generell so nicht möglich?



  • Du hast ja dort auch eine lokale Variable angelegt, die nichts mit dem Eltern-Dialog zu tun hat (au0er daß sie den selben Typ hat). Auf das Eltern-Fenster kannst du mit GetParent() zugreifen.



  • 👍 Aaahh, vielen Dank 🙂 Das war das was mir fehlte:

    void PANsetup::OnBnClickedButtonReset()
    {
    	CString test, resetcommand = "01030c00";		
    
    	CParestDlg *hCParest = (CParestDlg*)GetParent();
    
    	hCParest->sendPAN1310Cmd(resetcommand,port);
    
    	test.Format("sendPAN1310Cmd(%s,%s)",resetcommand,port);
    	hCParest->OListBox.AddString(test);	
    }
    

    Working as intended.


Anmelden zum Antworten