Problème de désactivation d'un bouton

Résolu
Pistol_Pete
Messages postés
1054
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
1054
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
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
15
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
1054
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
1054
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
1054
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