Nous mettons en page les boîtes de dialogue en utilisant l'éditeur de ressources. Donc dis que j'ai un RichEditCtrl appelé IDC_RICH. Et je veux le lier à une instance d'une classe personnalisée CMyRichEditCtrl : CRichEditCtrl
, sans perdre la possibilité de définir des propriétés dans l'éditeur de ressources.Quelle est la manière correcte de créer une sous-classe d'un contrôle MFC?
Quelle est la bonne façon? Vous pouvez certainement obtenir des fonctionnalités en créant une variable liée à DDX et en changeant le type en CMyRichEditCtrl
. Mais dans certains cas, je vois des gens appelant le code comme:
m_Rich.SubclassDlgItem(IDC_RICH, this));
Quelle est la différence?
EDIT: Un problème que je vois est que lorsque je substitue des méthodes Create (Ex), ils ne sont pas appelés. C'est un peu comme si le contrôle était déjà créé au moment où mon objet est lié à l'identifiant de la ressource, pehaps?
Par nom de classe vous signifie la classe Window, pas la classe C++? Si je crée un contrôle personnalisé avec son propre nom de classe Window, me permettra-t-il encore de modifier les propriétés de base dans l'éditeur de ressources? Ou juste apparaître comme une grosse boîte grise? –
Oui, classe de fenêtre, le premier paramètre à CreateWindow(). Vous ne pouvez pas placer de contrôle personnalisé dans l'éditeur de ressources sans en coder le support explicite. C'est à cela que sert l'entrée 'Contrôle personnalisé' dans VS Toolbox. Vous pouvez définir quelques propriétés, comme activé et légende, mais c'est très basique. (Par « contrôle personnalisé » Je veux dire « dérivé de CWnd », et non pas d'un autre contrôle, si vous faites cela, vous pouvez définir les propriétés dans l'éditeur de ressources, parce que l'éditeur de ressources ne connaîtra pas le nouveau contrôle ou la classe de la fenêtre de ce contrôle prénom). – Roel