Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Comme avec n’importe quelle classe dérivée de CWnd, vous pouvez modifier le comportement d’un contrôle en dérivant une nouvelle classe à partir d’une classe de contrôle existante.
Pour créer une classe de contrôle dérivée
Dérivez votre classe d’une classe de contrôle existante et remplacez éventuellement la
Createfonction membre afin qu’elle fournisse les arguments nécessaires à la fonction de classeCreatede base.Fournissez des fonctions membres du gestionnaire de messages et des entrées de table des messages pour modifier le comportement du contrôle en réponse à des messages Windows spécifiques. Voir le mappage des messages aux fonctions.
Fournissez de nouvelles fonctions membres pour étendre les fonctionnalités du contrôle (facultatif).
L’utilisation d’un contrôle dérivé dans une boîte de dialogue nécessite un travail supplémentaire. Les types et les positions des contrôles dans une boîte de dialogue sont normalement spécifiés dans une ressource de modèle de dialogue. Si vous créez une classe de contrôle dérivée, vous ne pouvez pas la spécifier dans un modèle de boîte de dialogue, car le compilateur de ressources ne connaît rien de votre classe dérivée.
Pour placer votre contrôle dérivé dans une boîte de dialogue
Incorporez un objet de la classe de contrôle dérivée dans la déclaration de votre classe de dialogue dérivée.
Remplacez la
OnInitDialogfonction membre dans votre classe de dialogue pour appeler laSubclassDlgItemfonction membre pour le contrôle dérivé.
SubclassDlgItem sous-classe dynamiquement un contrôle créé à partir d’un modèle de dialogue. Lorsqu’un contrôle est sous-classé dynamiquement, vous vous connectez à Windows, traitez certains messages au sein de votre propre application, puis transmettez les messages restants à Windows. Pour plus d’informations, consultez la fonction membre SubclassDlgItem de classe CWnd dans la référence MFC. L’exemple suivant montre comment écrire un remplacement de 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 dialogue, il est construit lorsque la boîte de dialogue est construite et il est détruit lorsque la boîte de dialogue est détruite. Comparez ce code à l’exemple dans Ajout de contrôles par main.