Partager via


Dérivation des contrôles d'un contrôle standard

Comme avec tout CWndclasse dérivée de, vous pouvez modifier le comportement d'un contrôle en dérivant une classe d'une classe de contrôle existante.

Pour créer une classe de contrôle dérivée

  1. Dérivez votre classe d'une classe de contrôle existant et substituez éventuellement la fonction membre de Créer afin qu'il fournisse des arguments nécessaires à la fonction de Créer de classe de base.

  2. Proposer des fonctions membres gestionnaires de messages et les entrées de la table des messages pour modifier le comportement du contrôle en réponse à des messages spécifiques de windows.Consultez Mapper les messages aux fonctions.

  3. Fournissez les nouvelles fonctions membres pour étendre les fonctionnalités du contrôle (facultatif).

À l'aide d'un contrôle dérivé dans une boîte de dialogue requiert le travail supplémentaire.Les types et les positions de contrôles dans une boîte de dialogue sont normalement spécifiés dans une ressource modèle de boîte de dialogue.Si vous créez une classe de contrôle dérivée, vous ne pouvez pas le spécifier dans un modèle de boîte de dialogue comme le compilateur de ressources ne sait rien sur votre classe dérivée.

Pour placer votre contrôle dérivé dans une boîte de dialogue

  1. Incluez un objet de la classe de contrôle dérivée dans la déclaration de la classe de boîte de dialogue dérivée.

  2. Substituez la fonction membre d' OnInitDialog dans votre classe de boîte de dialogue pour appeler la fonction membre d' SubclassDlgItem pour le contrôle dérivé.

Sous-classes d'SubclassDlgItem « dynamiquement » un contrôle créé à partir d'un modèle de boîte de dialogue.Lorsqu'un contrôle est dynamiquement sous-classé, vous accrochez dans windows, traitez des messages dans votre propre application, puis transmettez les autres messages à windows.Pour plus d'informations, consultez la fonction membre de SubclassDlgItem de la classe CWnd dans MFC Reference.L'exemple suivant montre comment vous pouvez écrire une substitution d' OnInitDialog pour appeler SubclassDlgItem:

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

   m_wndMyBtn.SubclassDlgItem(IDC_MYBTN, this);

   return TRUE;
}

Étant donné que le contrôle dérivé est incorporé dans la classe de boîte de dialogue, il sera construite lorsque la boîte de dialogue est construite, et sera supprimée lorsque la boîte de dialogue est détruite.Comparez ce code à l'exemple de Ajout de contrôles à la main.

Voir aussi

Référence

Faisant et l'utilisation des contrôles

Concepts

Contrôles (MFC)