Bonjour,
je voudrais remplacer par une image (enfin exactement 1 image pour chaque �tat) la case � cocher d'une checkbox. Je n'ai pas trouv� comment faire : est-ce que quelqu'un l'a d�j� fait et pourrait me dire comment proc�der ?
Merci d'avance.![]()
Bonjour,
je voudrais remplacer par une image (enfin exactement 1 image pour chaque �tat) la case � cocher d'une checkbox. Je n'ai pas trouv� comment faire : est-ce que quelqu'un l'a d�j� fait et pourrait me dire comment proc�der ?
Merci d'avance.![]()
salut,
pas de solution toute faite, il faut customiser le controle en r�definissant la fonction "Paint" ... c'est � dire, redessiner le controle toi meme, comme tu l'entends ...
pour �a, il y a le style BS_OWNERDRAW et la m�thode CButton::OnDrawItem()
mais il faudra aussi g�rer le dessin du texte ... pas simple si tu d�butes en MFC. (regarde aupr�s de la fonction DrawText() )
regarde sur le net, il y a pleins de ressources sur le sujet, notamment ici : http://www.codeproject.com/KB/button...draw%20buttons
tu devrais surement y trouver ton bonheur ...
@+
Le truc c'est que j'aimerai toujours pouvoir utiliser la fonction GetCheck().
Si je suis oblig� de repartir d'un CButton basique et de refaire ce m�canisme je trouverai �a passablement moisi ...
mais une CheckBox est un CButton ... c'est juste la fa�on de dessiner qui change. de meme pour un Radio button et un GroupBox
la m�thode GetCheck() et SetCheck() est dispo.
l'�tat du bouton (donc coch� ou pas) est fourni en param�tre � OnDrawItem() dans la structure DRAWITEMSTRUCT
@+
J'ai donc surcharg� un CButton et red�finit la fonction DrawItem() afin de personnaliser mon affichage.
Seul soucis si je cr�e mon bouton avec l'option BS_CHECKBOX, tout marche tr�s bien avec un affichage classique (que je ne souhaite pas garder au final). Mais si je rajoute l'option BS_OWNERDRAW, alors la fonction SetCheck() ne fonctionne plus ... c'est tout simplement incompr�hensible.
En affichage classique :
En affichage OWNERDRAW :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3 GetCheck(); -> 0 SetCheck(1); GetCheck(); -> 1
Pour r�sumer en OWNERDRAW, bien que l'affichage se fasse comme je le souhaite, l'�tat ne change pas.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3 GetCheck(); -> 0 SetCheck(1); GetCheck(); -> 0
Moi pas comprendre![]()
apr�s tests et recherches il s'av�re que c'est faux : il faut les surcharger pour que �a marche et ajouter un attribut � la checkbox perso pour retenir son �tat.la m�thode GetCheck() et SetCheck() est dispo
En clair il faut tout se refaire puis �a fonctionne![]()
Partager