[c][WinApi] Combobox : détecter le changement d'item

[Résolu]
Signaler
Messages postés
33
Date d'inscription
dimanche 14 mai 2006
Statut
Membre
Dernière intervention
16 décembre 2006
-
Messages postés
33
Date d'inscription
dimanche 14 mai 2006
Statut
Membre
Dernière intervention
16 décembre 2006
-
Bonjour

 Pour une combobox, les messages CBN_EDITCHANGE ou CBN_EDITUPDATE sont bien envoyés quand le texte du contrôle d'édition est modifié au clavier mais pas quand il est modifié par la sélection d'un item dans la liste déroulante ... et j'aimerais détecter cette modification.
Ce changement est pris en compte uniquement quand je sélectionne un autre contrôle avec le message CBN_KILLFOCUS... mais il faut que mon programme détecte le changement d'item sans attendre la sélection d'un autre contrôle.

Mon code aurait la forme suivante :

  if(HIWORD(wParam)==CBN_EDITCHANGE)
  {
    if(lParam==p_controle->hCombo[2])
    {
        //trouver le nouvel item et faire les modifications adaptées.
    }
  }

Enfin l''item détecté avec CBN_SELCHANGE est l'ancien item et non le nouveau.
 Qui sait comment faire  pour détecter le nouvel item  ?
Merci ;)

2 réponses

Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
24
CBN_SELCHANGE et recup index avec CB_GETCURSEL
Messages postés
33
Date d'inscription
dimanche 14 mai 2006
Statut
Membre
Dernière intervention
16 décembre 2006

Merci beaucoup ! je trournais en rond depuis un moment. Avec la fonction GetWindowText  ça ne marche pas mais en envoyant CB_GETCURSEL ça marche !

Donc voici mon code complété grace à  yann_lo_san :
if(HIWORD(wParam)==CBN_SELCHANGE)
  {
    if(lParam==p_controle->hCombo[2])
    {
        item =SendMessage(p_controle->hCombo[2],CB_GETCURSEL,0,0);
        SendMessage(p_controle->hCombo[2],CB_GETLBTEXT,item,texte);
    // faire mes modifications adaptées au nouvel item
       }

encore merci