Evenement cliqué sur un bouton créé par programme (MFC) ?

Evenement cliqué sur un bouton créé par programme (MFC) ? - C++ - Programmation

Marsh Posté le 25-03-2003 à 11:46:30    

Salut :hello:  
 
J'ai beaucoup de boutons dans une boite de dialogue, et si je passe par le class wizard, ça me fait énormément de fonctions. Sachant que le traitement se ressemble très fortement, est-ce possible de faire une fonction qui soit applicable à tous les boutons du même type (tous les clics sur un bouton radio par ex) ?

Reply

Marsh Posté le 25-03-2003 à 11:46:30   

Reply

Marsh Posté le 25-03-2003 à 11:59:58    

si le traitement effectué est le même à chaque fois, tu le places dans une fonction que tu appelles dans chaque Callback. Mais tu ne couperas pas aux fonctions d'interception d'évènements de toute façon.


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 25-03-2003 à 12:04:59    

L'interêt était justement de ne pas avoir une fonction pour chaque évenement... Parce que faire une fonction pour le traitement, ça changerait pas grand chose, entre 1 et 3 lignes de code pour chq bouton.
 
Mais j'ai 27*3 boutons radio et 27 check :sweat:

Reply

Marsh Posté le 25-03-2003 à 12:20:58    

sinon, tu vas dans le DDX, et tu rattaches chaque message WM_CLICK à une seule fonction.


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 25-03-2003 à 12:21:27    

Ben tu peux faire un truc c soit
- Faire un bouton Update, ki te fit un gros UpdateData et qui appele ton traitement a la place des OnButton (donc la c ds le cas ou si l appui sur tes radio ou check ne genere pas une mise en page ou traitement particulier a chaque fois)
- Soit tu intercept ds le OnCmdMsg l'appui sur tes boutons, mais alors va faloir organise les numero de ressources associes a tes bouton afin de pouvoir faire qqchose du style si id compris entre 30000 et 30098 alors faire le traitement (avec possiblite ou pas de rendre la main pour les OnButton).

Reply

Marsh Posté le 25-03-2003 à 13:36:05    

Harkonnen a écrit :

sinon, tu vas dans le DDX, et tu rattaches chaque message WM_CLICK à une seule fonction.
 


 
C'est comme ça que j'avais pensé faire à la base, mais dans ce cas, je peux pas connaître l'id du bouton cliqué ?

Reply

Marsh Posté le 25-03-2003 à 13:38:28    

VisualC++ a écrit :

Ben tu peux faire un truc c soit
- Faire un bouton Update, ki te fit un gros UpdateData et qui appele ton traitement a la place des OnButton (donc la c ds le cas ou si l appui sur tes radio ou check ne genere pas une mise en page ou traitement particulier a chaque fois)
- Soit tu intercept ds le OnCmdMsg l'appui sur tes boutons, mais alors va faloir organise les numero de ressources associes a tes bouton afin de pouvoir faire qqchose du style si id compris entre 30000 et 30098 alors faire le traitement (avec possiblite ou pas de rendre la main pour les OnButton).


 
Ok, je vais jeter un coup d'oeil là dessus !
Mais finalement, je ne suis pas sûr que ça simplifie mon code, même si je gagne beaucoup de place :D

Reply

Marsh Posté le 25-03-2003 à 15:14:30    

raph77 a écrit :

Salut :hello:  
 
J'ai beaucoup de boutons dans une boite de dialogue, et si je passe par le class wizard, ça me fait énormément de fonctions. Sachant que le traitement se ressemble très fortement, est-ce possible de faire une fonction qui soit applicable à tous les boutons du même type (tous les clics sur un bouton radio par ex) ?


 
Il faut que tu utilises ON_CONTROL_RANGE
http://msdn.microsoft.com/library/ [...] ommand.asp


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
Reply

Marsh Posté le 25-03-2003 à 15:20:57    

Effectivement ça ressemble à ce que je pourrais chercher !
Je regarde ça tout de suite !
 
Merci ;)

Reply

Marsh Posté le 25-03-2003 à 15:27:48    


 
Par contre, mon traitment diffère légerement selon le bouton cliqué, je peux pas récupérer l'id du bouton avec ça ?

Reply

Marsh Posté le 25-03-2003 à 15:27:48   

Reply

Marsh Posté le 25-03-2003 à 15:33:40    

raph77 a écrit :


 
Par contre, mon traitment diffère légerement selon le bouton cliqué, je peux pas récupérer l'id du bouton avec ça ?


 
Il est passé en paramètre de la fonction 'memberFxn', si je me souviens bien.


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
Reply

Marsh Posté le 25-03-2003 à 15:41:10    

Tetragrammaton IHVH a écrit :


 
Il est passé en paramètre de la fonction 'memberFxn', si je me souviens bien.  


 
C'est bon, j'ai trouvé un exemple avec cette fonction, je devrais y arriver !
 
Merci bien :hello:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed