Checkbox in Unterklasse ohne Membervariable aktivieren



  • Hi @all,

    wie kann ich eine Checkbox in einer unterdefinierten Klasse aktivieren:

    In Hauptklasse wurde definiert:

    CChildDialog m_ChildDlg;
    m_ChildDlg.Create(IDD_CHILD_DIALOG, this);
    ...
    

    Aktivieren der Checkbox im Child-Dialog direkt:

    ((CButton*) GetDlgItem(IDC_CHECK))->SetCheck(1);
    

    Gesucht Konstrukt aus dem Hauptdialog:

    m_ChildDlg.((CButton*) GetDlgItem(IDC_CHECK))->SetCheck(1);
    

    --> klappt in der Form nicht

    😕



  • Dressman1981 schrieb:

    --> klappt in der Form nicht 😕

    Woher soll der Compiler wissen was das heißt?

    So Sollte es gehen:

    CButton *pButton = reinterpret_cast<CButton*>(this->m_ChildDlg.GetDlgItem(IDC_CHECK1));
    pButton->SetCheck(1);
    


  • Dressman1981 schrieb:

    Hi @all,

    wie kann ich eine Checkbox in einer unterdefinierten Klasse aktivieren:

    In Hauptklasse wurde definiert:

    CChildDialog m_ChildDlg;
    m_ChildDlg.Create(IDD_CHILD_DIALOG, this);
    ...
    

    Aktivieren der Checkbox im Child-Dialog direkt:

    ((CButton*) GetDlgItem(IDC_CHECK))->SetCheck(1);
    

    Gesucht Konstrukt aus dem Hauptdialog:

    m_ChildDlg.((CButton*) GetDlgItem(IDC_CHECK))->SetCheck(1);
    

    --> klappt in der Form nicht

    😕

    Die ganze Konstruktion riecht irgendwie nach schlechtem Design, aber wenn, dann würde ich es so lösen:

    Im Unterdialog:

    /*public*/ 
    CChildDialog::SetCheck(int checked)
    {
        ((CButton*)GetDlgItem(IDC_CHECK))->SetCheck(checked);
    }
    

    Im Hauptdialog:

    m_ChildDlg->SetCheck(1);
    

    Wenn Du die Checkbox nur beim Anlegen des Dialoges vorbelegen möchtest, dann würde ich den Konstruktor von CChildDialog entsprechend erweitern.



  • Hallo ihr beiden, hatte kurzzeitig ein Brett vorm Kopf.

    Ob das sinnvoll ist oder nicht bleibt zunächst dahingestellt, meine Lösung:

    ((CButton*) m_ChildDlg.GetDlgItem(IDC_CHECK))->SetCheck(1);


Anmelden zum Antworten