shuttleur
Messages postés33Date d'inscriptionmercredi 12 septembre 2007StatutMembreDernière intervention30 juin 2008
-
4 avril 2008 à 10:43
shuttleur
Messages postés33Date d'inscriptionmercredi 12 septembre 2007StatutMembreDernière intervention30 juin 2008
-
4 avril 2008 à 14:41
Bonjour à tous,
Je deviens fou avec un bouton auquel je veux assigner un bitmap spécifique pour chacun des trois "états" suivants :
-> pressé, relaché, survolé
Comme dans l'exemple connu de Charles Petzold (les deux boutons avec des motifs en triangle qui redimensionnent sa fenetre),
j'ai fait un bouton ownerdrawn , et j'intercepte l'evenement WM_DRAWITEM de la fenetre mère du bouton.
Là, je modifie le DC avec le bitmap de mon choix. Ca marche super, c'est très fluide, parfait.
Seulement, j'ai des problèmes en implémentant le highlight quand la souris survole.
J'ai ce code dans la procédure de mon bouton :
Les evenements mousehover et mouseleave arrivent parfaitement quand il faut (testé avec des messagebox) (et tiennent bien compte de la région : le bouton est circulaire)
Je n'arrive pas à faire un SendMessage(STM_SETIMAGE) au bouton ici, ca doit venir du fait qu'un bouton ownerdrawn ne gère pas ca..
Le redraw est donc forcé avec InvalideRect, mais dans le WM_DRAWITEM de la fenetre mere comment savoir si le DRAWITEM fait suite à un mouseleave ou à un mousehover ?
Avec les coordonnées de la souris, c'est une catastrophe. (certainement à cause de la région).
Comment gérez vous le survol de la souris avec un bouton ownerdrawn ?