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);