Ajout dans 1 combobox

tophe03 Messages postés 327 Date d'inscription lundi 24 janvier 2005 Statut Membre Dernière intervention 14 avril 2010 - 2 févr. 2007 à 15:16
tophe03 Messages postés 327 Date d'inscription lundi 24 janvier 2005 Statut Membre Dernière intervention 14 avril 2010 - 4 févr. 2007 à 21:24
Bonjour,

Je cherche a savoir comment l'utilsateur peut entrer un nouvel élément dans une combobox. Quelqu'un sait-il comment procéder? Je suppose qu'il faut utiliser CB_EDITUPDATE. Mais après  je sais pas.

Merci

4 réponses

racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
2 févr. 2007 à 19:44
Salut,
Pour ajouter un nouvel élément à un ComboBox on lui envoit le message CB_ADDSTRING:
SendMessage(hwndcombo,CB_ADDSTRING, 0, (LPARAM)"Nouvel élément");
CB_EDITUPDATE est une notification que reçoit la fenêtre mère quand le choix dans un combobox est en train de changer.
0
tophe03 Messages postés 327 Date d'inscription lundi 24 janvier 2005 Statut Membre Dernière intervention 14 avril 2010
2 févr. 2007 à 20:15
Salut,
Justement, je veux que ce soit l'utilisateur du programme qui puisse changer le choix dans le combobox et ajouter ce choix dans la combobox. Je ne sais pas si je me fais bien comprendre. Par exemple, dans une toolbar, j'ai une combobox pour le choix de la taille de caractère. Elle propose 8, 9,10, 11, 12, 14, 18, 24, 36, 48, 72. Maintenant si l'utilisateur veux une taille de 16, je voudrais qu'il puisse entrer 16 dans la combobox, et lorsqu'il tape RETURN, le texte se mette sous cette taille mais aussi que 16 soit ajouté dans la combobox.
Merci
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
3 févr. 2007 à 01:47
Le ComboBox est un controle composé. Il se compose d'un Edit et d'une ListBox . Pour réaliser ce que tu veux faire, tu dois récupérer le HWND de l'Edit pour le sous-classer. Puisque l'Edit est le premier controle enfant du ComboBox, on récupère son HWND ainsi:
HWND hwndEdit= GetWindow(hwndCombo,GW_CHILD);
On le sous-classera ensuite avec SetWindowLong (). Dans la fonction de sous-classement on traite WM_KEYDOWN et intercepte la touche ENTREE. A chaque appui sur cette touche, le contenu de l'Edit sera récupéré avec GetWindowText() puis ajouté dans la liste des choix du ComboBox grâce au message CB_ADDSTRING.
Tu peux regarder mon code source sur le ComboBox colorié dans lequel j'ai sous-classé son Edit:
=33268 http://www.cppfrance.com/code.aspx?ID=33268
0
tophe03 Messages postés 327 Date d'inscription lundi 24 janvier 2005 Statut Membre Dernière intervention 14 avril 2010
4 févr. 2007 à 21:24
salut
je vois bien le truc mais quand il faut que quand j'envoie SendMessage(GetWindow(hWnd), CB_SETCURSEL, nSel, 0); la taille des caractères ne change pas.
Merci
0
Rejoignez-nous