Problème de désactivation d'un bouton

Résolu
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 - 18 oct. 2007 à 17:12
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 - 18 oct. 2007 à 20:52
Bonjour
Voila mon problème:
J'ai un bouton sur lequel j'ai appliqué un bmp et lorsque je veux désactiver ce bouton, au lieu de le griser, il remplace l'image de mon bouton par un aplat de couleur gris foncé.

hRedo   =CreateWindow("BUTTON",NULL,WS_CHILD | WS_VISIBLE | BS_BITMAP,80,2,25,25,hwnd,(HMENU)ID_EDITION_REDO,NULL,NULL);

hIcon[5]=(HBITMAP)LoadImage(hinst, "Icon\\Icon6.bmp", IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION | LR_LOADFROMFILE );

SendMessage(hRedo   , BM_SETIMAGE, (WPARAM)IMAGE_BITMAP, (LPARAM)(HANDLE)hIcon[6]);

EnableWindow(hRedo,FALSE);

Comment faut il procéder pour uniquement grisé l'image de mon bouton en non pas la remplacer par un aplat gris.

J'espère avoir été suffisamment clair
Merci

8 réponses

racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
18 oct. 2007 à 20:33
Salut,
Tu peux sous-classer ton bouton. Pendant le traitement de WM_PAINT de la procédure de sous-classement, tu vérifies si le bouton est activé ou non grâce à IsWindowEnabled(). Si oui tu fais un BitBlt() de l'image normale. Sinon tu fais un BitBlt() de l'image grisée. Les deux images bitmap devraient être préalablement chargées depuis les ressouces par exemple.
Tu peux aussi utiliser un bouton ownerdraw. Pendant le traitement du message  WM_DRAWITEM, tu procèdes comme expliqué précédemment.
3
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
18 oct. 2007 à 17:55
Ne faut il pas redessiner ton bouton dans WM_PAINT en lui réaffectant l'image ?

Shell
0
ndubien Messages postés 557 Date d'inscription dimanche 25 septembre 2005 Statut Membre Dernière intervention 10 mai 2014 4
18 oct. 2007 à 18:17
Pour l'aplat de couleur, avec XP mais pas avec Vista...
Sinon, pour empêcher que l'image soit griser utilises : 
   SendMessage(hRedo   , BM_SETIMAGE, (WPARAM)IMAGE_BITMAP, (LPARAM)(HANDLE)NULL);

Normalement, plus di'mage et un bouton joliement grisé! LOL
Bon courage!


<hr />


Nico
0
ndubien Messages postés 557 Date d'inscription dimanche 25 septembre 2005 Statut Membre Dernière intervention 10 mai 2014 4
18 oct. 2007 à 18:18
Pour plus d'infos sur comment enlever l'image regardez ma question :
http://www.cppfrance.com/infomsg_IMAGE-SUR-BOUTON_1014705.aspx#3
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
18 oct. 2007 à 18:28
Merci pour vos réponse mais ce n'est pas ce que je veux faire.
Je veux concerver l'image de mon bouton et voir cette image un peu grisé lorsque le bouton est desactivé.
Pour l'exemple: le bouton undo et redo de WORD lorsqu'il n'y a rien à defaire.

Deathcrash->si je le repaint dans le message WM_PAINT, il aura visuellement la meme allure que lorsqu'il sera activé...  
0
ndubien Messages postés 557 Date d'inscription dimanche 25 septembre 2005 Statut Membre Dernière intervention 10 mai 2014 4
18 oct. 2007 à 18:42
Et bien sinon, utilise deux images par boutons : une pour activé et une pour désactiver.
Ton bouton ne sera pas désaciver en réalité, il faudra donc que tu teste l'état du bouton lors de l'appuie sur le bouton, s'il doit être activé ou non, sinon tu ne fais rien.
0
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
18 oct. 2007 à 18:59
yep c'est une solution. Cependant j'aimerai savoir si c'est possible de le faire directement en desactivant le bouton.
0
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
18 oct. 2007 à 20:52
Merci racpp cette reponse me convient en tout point.
A+
0
Rejoignez-nous