Bouton + liste choix

Signaler
Messages postés
91
Date d'inscription
vendredi 10 octobre 2003
Statut
Membre
Dernière intervention
12 octobre 2006
-
Messages postés
91
Date d'inscription
vendredi 10 octobre 2003
Statut
Membre
Dernière intervention
12 octobre 2006
-
Salut a tous,



J'aurai voulu savoir comment on faisait un truc. Je ne sais pas
vraiment qu'est-ce qu'il faut que je recherche en fait. J'explique ce
que je cherche à faire: En fait, je veux cliquer sur un bouton (ca pas
de pb c'est de mon niveau) et que ca affiche une sorte de liste de
choix juste en dessous du bouton (y'a que 2 choix possible!!), que l'on
sélectionne un des deux et que cela lance une action. Mon problème se
situe plus dans le fait d'afficher cette liste de choix !



Merci de votre aide.

19 réponses

Messages postés
14
Date d'inscription
lundi 20 novembre 2000
Statut
Membre
Dernière intervention
29 juillet 2005

si t'es sous visual c++, tu créé une liste combinée. Tu met par exemple IDC_LISTE1 comme ID et tu décoche la case Visible puis tu créé un évenement pour le bouton. Dans le code de la fonction tu met: GetDlgItem(IDC_LISTE1)->ShowWindow(TRUE);
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
9
liste combinée -> Tu trouvera plus chose si tu cherches ComboBox, avec le style CBS_DROPDOWN
Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
2
Bé en faite je pense qu'il souhaite faire un bouton comme le précédent dans IE

Genre, tu cliques sur la ptite flêche à côté, et ta un genre de Menu qui descend...

void Aurevoir( void ); //Bonne journée
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
9
Bah moi je pense pas
Messages postés
91
Date d'inscription
vendredi 10 octobre 2003
Statut
Membre
Dernière intervention
12 octobre 2006

J'ai ajouté une Combobox que j'ai défini en DROPDOWN et visible 'false'. Lorsque l'on clic sur le bouton j'ai rajouté le code :

GetDlgItem(IDC_LISTE1)->ShowWindow(TRUE); mais ca marche pas, le compilateur veut bien mais à l'éxécution ca plante.
Messages postés
91
Date d'inscription
vendredi 10 octobre 2003
Statut
Membre
Dernière intervention
12 octobre 2006

Joky -> oui c ca grossomodo mais avec 2 choix fixé au préable
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
9
Si ca plante sur cette ligne, ca doit être GetDlgItem(IDC_LISTE1) qui retourne NULL. Oublie de toute facons cette histoire de ShowWindow, laisse à visible c'est tout.
Regarde juste ce que retourne GetDlgItem(IDC_LISTE1)
Messages postés
91
Date d'inscription
vendredi 10 octobre 2003
Statut
Membre
Dernière intervention
12 octobre 2006

Ba non il faut que ca s'affiche uniquement quand on clic sur l'autre
bouton, ce qui veut bien dire qu'à un moment il faut qu'on décide de
l'afficher puis de le masquer
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
9
C'est le système qui s'occupe de cela. Une combobox est une edit+une listBox, c'est la listBox qui s'affiche ou se cache, mais ce n'est pas toi qui gère ca.
Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
2
Et si tu fais un simple bouton, et quand on click dessus, ta un menu qui s'affiche ;)

TrackPopupMenu( )

C'est pareil :)

void Aurevoir( void ); //Bonne journée
Messages postés
91
Date d'inscription
vendredi 10 octobre 2003
Statut
Membre
Dernière intervention
12 octobre 2006

Ca me parait etre ca que je veux faire mais je ne sais pas trop comment
le mettre en oeuvre. Je vais voir si il y a une source la dessus.
Messages postés
91
Date d'inscription
vendredi 10 octobre 2003
Statut
Membre
Dernière intervention
12 octobre 2006

Mince alors je trouve pas de source.Quelqu'un aurai bien un petit exemple de mise en oeuvre?
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
9
Tu sous-classes le bouton, et dans WM_RBUTTONDOWN, tu fait le trackPopupMenu
Ceci est un exemple un peu similaire: http://www.cppfrance.com/code.aspx?ID=32072, mais avec une ListBox
Messages postés
91
Date d'inscription
vendredi 10 octobre 2003
Statut
Membre
Dernière intervention
12 octobre 2006

Bon en fait, j'arrive a créer mon petit menu, et il fait ce que je lui
ai demandé. A ce petit détail près, il n'est pas placé ou je le
souhaitait. En fait, j'aurai aimé qu'il se situe en dessous de mon
bouton, mais je n'y arrive pas pour l'instant.
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
9
RECT rect;
GetWindowRect(hBtn, &rect);
Mettre le menu à la position (rect.left, rect.bottom + 1)

Tu peux aussi penser au fait que si le bouton est trop bas sur l'écran pour être affiché en entier, il faut afficher le menu au dessus et pas en dessous du bouton
Messages postés
91
Date d'inscription
vendredi 10 octobre 2003
Statut
Membre
Dernière intervention
12 octobre 2006

euh hBtn c koi et tu l'as eu comment?
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
9
hBtn c'est l'handle du bouton et c'est un pote qui me l'a filé
J'aurais aussi pu demander à GetDlgItem(hdlg, IDC_LISTE1);
hdlg c'est l'handle du dialogue, mais celui la tu dois deja l'avoir
Messages postés
91
Date d'inscription
vendredi 10 octobre 2003
Statut
Membre
Dernière intervention
12 octobre 2006

ok merci ;-)
Messages postés
91
Date d'inscription
vendredi 10 octobre 2003
Statut
Membre
Dernière intervention
12 octobre 2006

c cool ca fonctionne au poil.



Merci a tous pour votre aide.