Ableiten von Steuerelementen von einem Standardsteuerelement

Wie bei jeder von CWnd abgeleiteten Klasse können Sie das Verhalten eines Steuerelements ändern, indem Sie eine neue Klasse von einer vorhandenen Steuerelementklasse ableiten.

So erstellen Sie eine abgeleitete Steuerelementklasse

  1. Leiten Sie die Klasse von einer vorhandenen Steuerelementklasse ab, und überschreiben Sie optional die Create Memberfunktion, sodass sie die erforderlichen Argumente für die Basisklassenfunktion Create bereitstellt.

  2. Stellen Sie Memberfunktionen des Nachrichtenhandlers und Nachrichtenzuordnungseinträge bereit, um das Verhalten des Steuerelements als Reaktion auf bestimmte Windows-Nachrichten zu ändern. Siehe Zuordnen von Nachrichten zu Funktionen.

  3. Stellen Sie neue Memberfunktionen bereit, um die Funktionalität des Steuerelements zu erweitern (optional).

Die Verwendung eines abgeleiteten Steuerelements in einem Dialogfeld erfordert zusätzliche Arbeit. Die Typen und Positionen von Steuerelementen in einem Dialogfeld werden normalerweise in einer Dialogvorlagenressource angegeben. Wenn Sie eine abgeleitete Steuerelementklasse erstellen, können Sie sie nicht in einer Dialogvorlage angeben, da der Ressourcencompiler nichts über die abgeleitete Klasse kennt.

So platzieren Sie das abgeleitete Steuerelement in einem Dialogfeld

  1. Betten Sie ein Objekt der abgeleiteten Steuerelementklasse in die Deklaration der abgeleiteten Dialogklasse ein.

  2. Überschreiben Sie die OnInitDialog Memberfunktion in Ihrer Dialogklasse, um die SubclassDlgItem Memberfunktion für das abgeleitete Steuerelement aufzurufen.

SubclassDlgItem "Dynamisch unterklassen" ein Steuerelement, das aus einer Dialogvorlage erstellt wurde. Wenn ein Steuerelement dynamisch unterklassig ist, verbinden Sie sich mit Windows, verarbeiten einige Nachrichten in Ihrer eigenen Anwendung, und übergeben Sie dann die neu Standard Nachrichten an Windows. Weitere Informationen finden Sie in der SubclassDlgItem-Memberfunktion der Klasse CWnd in der MFC-Referenz. Das folgende Beispiel zeigt, wie Sie eine Außerkraftsetzung des Aufrufs OnInitDialogSubclassDlgItemschreiben können:

BOOL CSubDialog::OnInitDialog()
{
   CDialog::OnInitDialog();

   m_wndMyBtn.SubclassDlgItem(IDC_MYBTN, this);

   return TRUE;
}

Da das abgeleitete Steuerelement in die Dialogklasse eingebettet ist, wird es erstellt, wenn das Dialogfeld erstellt wird, und es wird zerstört, wenn das Dialogfeld zerstört wird. Vergleichen Sie diesen Code mit dem Beispiel zum Hinzufügen von Steuerelementen von Hand.

Siehe auch

Erstellen und Verwenden von Steuerelementen
Steuerelemente