gatorette a écrit :
C'est pas très bien foutu, mais c'est assez logique également.
En effet, il y a deux solutions : soit le parent envoie la commande au bouton "ChangeTextColor" (ou définit un style quelconque à la création du bouton), soit le bouton demande au parent s'il a des changements à apporter à la façon dont il doit se dessiner.
La première solution à l'avantage de la simplicité. Dans le parent, tu fais juste un appel à une fonction une fois pour toute et quand tu veux changer, tu rappelles la fonction. Par contre, elle impose d'utiliser un grand nombre de messages (voir la longue liste des messages pour une ListView par exemple) et implique une programmation particulière du contrôle. De plus, tu es obligé d'envoyer le message à tous tes boutons.
La deuxième solution impose évidemment une gestion plus lourde, mais permet un fonctionnement très souple. En effet, en gérant le message WM_CTLCOLORBTN sans se préoccuper de qui l'envoie, on peut changer l'apparence de tous les boutons en une seule fois. De même, ce message est envoyé quand le bouton doit se redessiner (je pense), et l'on modifie directement le DC qu'utilise le bouton pour se dessiner (je suppose), cette méthode est donc un peu plus efficiente. Il me semble donc que pour une action finalement assez rare, c'est une assez bonne méthode.
|