[C/WIN32] BOUTON BITMAP - SUBCLASSING

Messages postés
536
Date d'inscription
mercredi 27 avril 2005
Statut
Membre
Dernière intervention
22 août 2008
- - Dernière réponse : tribord10
Messages postés
2
Date d'inscription
dimanche 22 mai 2005
Statut
Membre
Dernière intervention
31 août 2008
- 30 mai 2008 à 23:01
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/35623-c-win32-bouton-bitmap-subclassing

Afficher la suite 
tribord10
Messages postés
2
Date d'inscription
dimanche 22 mai 2005
Statut
Membre
Dernière intervention
31 août 2008
-
Trés bien
mat1eu
Messages postés
13
Date d'inscription
vendredi 13 août 2004
Statut
Membre
Dernière intervention
20 février 2006
-
salut katsankat, j'apprend doucement le win 32 et je trouve ton code vraiment bien je pense qu'il est utile et tres simple, c cool surtout quand on debute.......;)
merci
Mat1eu
mat1eu
Messages postés
13
Date d'inscription
vendredi 13 août 2004
Statut
Membre
Dernière intervention
20 février 2006
-
salut katsankat, j'apprend doucement le win 32 et je trouve ton code vraiment bien je pense qu'il est utile et tres simple, c cool surtout quand on debute.......;)
merci
Mat1eu
julienbj
Messages postés
458
Date d'inscription
jeudi 4 décembre 2003
Statut
Membre
Dernière intervention
19 décembre 2008
1 -
Je suis pa d'accord.
Si pour chaque bouton que tu souhaites rajouter tu dois recréer une fonction de traitement des messages on en finit plus.
Tu peux ne garder qu'une seule fonction de traitement des messages pour tous tes boutons, il fautjuste ue tu donnes à chaque bouton les handles ou chemin d'accès des bitmpas qu'il doit utiliser, ce qui est faisable avec SetWindowLong.

1.-Création du bouton (CreateWindow)
2.-Association des images au bouton (SetWindowLong avec GWL_USERDATA + passage d'un pointeur sur une structure contenant handle ou chemin d'accès aux bmp)
3.-Association de la fonction de sous classement (SetWindowLong avec GWL_WNDPROC)

Il ne reste plus qu'à modifier un peu la fonction de sous classement pour récupérer les infos qu'on a passé au bouton par l'intermédiaire de GetWindowLong.
Normalement avec ca, tu peux créer autant de boutons que tu veux avec une seule fonction de sous classement.
katsankat
Messages postés
577
Date d'inscription
vendredi 30 décembre 2005
Statut
Membre
Dernière intervention
12 juillet 2012
3 -
Pour plusieurs boutton, il faut ajouter le nouveau dans le fichier rc (en remplaçant celui qui sert à rien ;) après faut rajouter le prototype de la fonction:
WNDPROC 2mebouttonProc;
Puis écrire cette fonction en recopiant l'autre, et l' appeler dans WM_INITDIALOG. Et ne pas oublier de supprimer l' objet bitmap quand l' appli ferme.

La question n'est pas de savoir si l' idée est bonne ou pas mauvaise, mais comment récupérer le mousemove et le click sur un contrôle statique autrement que par subclassing! Si quelqu'un trouve on est preneur.

C'est du C, pas du C++.