acryline
Messages postés33Date d'inscriptiondimanche 14 mai 2006StatutMembreDernière intervention16 décembre 2006
-
16 déc. 2006 à 16:00
acryline
Messages postés33Date d'inscriptiondimanche 14 mai 2006StatutMembreDernière intervention16 décembre 2006
-
16 déc. 2006 à 16:41
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 ;)
acryline
Messages postés33Date d'inscriptiondimanche 14 mai 2006StatutMembreDernière intervention16 décembre 2006 16 déc. 2006 à 16:41
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
}