Ableiten von Steuerelementen von einem Standardsteuerelement
Wie mit CWnd abgeleitete Klasse, können Sie ein Verhalten des Steuerelements ändern, indem Sie eine neue Klasse aus einer Klasse des vorhandenen Steuerelements berechnen.
So eine abgeleitete Steuerelementklasse erstellen
Ableiten der Klasse aus einer Klasse des vorhandenen Steuerelements und Überschreiben Sie optional die Erstellen-Memberfunktion, sodass sie die erforderlichen Argumente der Basisklassen Erstellen-Funktion bereitstellt.
Erstellen Sie Meldungshandlermemberfunktionen und -Meldungszuordnungseinträge bereit, um das Verhalten des Steuerelements als Reaktion auf Windows-Meldungen bestimmte zu ändern. Siehe Zuordnen von Meldungen zu Funktionen.
Erstellen neuer Memberfunktionen bereit, um die Funktionalität des Steuerelements erweitern (optional).
Verwenden eines abgeleiteten Steuerelements in einem Dialogfeld erfordert zusätzliche Arbeit. Die Typen und Position der Steuerelemente in einem Dialogfeld werden normalerweise in einer Dialogfeldvorlagenressource angegeben. Wenn Sie eine abgeleitete Steuerelementklasse erstellen, können Sie sie in einer Dialogfeldvorlage nicht angeben, da der Ressourcencompiler nichts über die abgeleitete Klasse weiß.
Um das Steuerelement abgeleitetes in einem Dialogfeld platzieren
Betten Sie ein Objekt der abgeleitete Steuerelementklasse in der Deklaration der abgeleiteten Dialogfeldklasse ein.
Überschreiben Sie die Memberfunktion OnInitDialog in der Dialogfeldklasse, um die SubclassDlgItem für Memberfunktion das abgeleitete Steuerelement aufzurufen.
SubclassDlgItem "ordnet dynamisch" ein Steuerelement konvertiert, das von einer Dialogfeldvorlage erstellt wird. Wenn ein Steuerelement dynamisch als Unterklasse definiert ist, verknüpfen Sie in Windows, verarbeiten einige Meldungen in Ihrer eigenen Anwendung, dann werden die verbleibenden Meldungen an Windows weiter. Weitere Informationen finden Sie in SubclassDlgItem-Memberfunktion der CWnd-Klasse in der MFC-Referenz. Das folgende Beispiel zeigt, wie Sie eine Überschreibung von OnInitDialog schreiben, um SubclassDlgItem aufzurufen:
BOOL CSubDialog::OnInitDialog()
{
CDialog::OnInitDialog();
m_wndMyBtn.SubclassDlgItem(IDC_MYBTN, this);
return TRUE;
}
Da das abgeleitete Steuerelement in Dialogklasse eingebettet wird, wird dieses erstellt, wenn das Dialogfeld erstellt wird, und es zerstört wird, wenn das Dialogfeld zerstört wird. Vergleichen Sie diesen Code zum Beispiel unter Steuerelemente von Hand hinzufügen.
Siehe auch
Referenz
Erstellen und Verwenden von Steuerelementen