Probleme de selection dans une combobox

Signaler
Messages postés
8
Date d'inscription
mercredi 16 décembre 2009
Statut
Membre
Dernière intervention
10 juin 2010
-
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
-
Bonjour, donc j'ai deux combobox que j'ai crée comme ceci:
HWND hGroup=CreateWindow(
        TEXT("BUTTON"),
        TEXT("Premier paramètre"),
        WS_CHILD|WS_VISIBLE|BS_GROUPBOX,
        10,10,
        200,100,
        fenetrePrincipale,
        NULL,
        instance,
        NULL);
    {
        
hComboBox1=CreateWindow(
        TEXT("COMBOBOX"),
        TEXT(""),
        WS_CHILD|WS_VISIBLE|CBS_DISABLENOSCROLL|CBS_DROPDOWNLIST,
        20,40,
        180,150,
        fenetrePrincipale,
        (HMENU)ID_COMBOBOX_1,
        instance,
        NULL);

//Remplissage
SendMessage(hComboBox1, CB_ADDSTRING, 0, (LONG)TEXT("plop"));
SendMessage(hComboBox1, CB_ADDSTRING, 0, (LONG)TEXT("plop2"));
SendMessage(hComboBox1, CB_ADDSTRING, 0, (LONG)TEXT("flop"));
SendMessage(hComboBox1, CB_ADDSTRING, 0, (LONG)TEXT("tlop"));
SendMessage(hComboBox1, CB_ADDSTRING, 0, (LONG)TEXT("plip"));




combo1_2 = CreateWindow(TEXT("COMBOBOX"),
TEXT(""), WS_CHILD|WS_VISIBLE|CBS_DISABLENOSCROLL|CBS_DROPDOWNLIST,
20,80,150,200,
fenetrePrincipale,
0,
instance, NULL);

}


Selon la selection que je veux ou non j'affiche la combobox n°2. Puis je rajoute le texte dans la combo box selon le choix de l'utilisateur. Le texte de la deuxieme combobox est récupéré dans la bd à l'aide de la fonction Recup().

switch (mes)
   {
   case WM_CREATE:
RemplieFenetrePrincipale(hWnd);		
return 0;

   case WM_COMMAND:
if(HIWORD(wParam)==CBN_SELENDOK)
{
element = SendMessage(hComboBox1, CB_GETCURSEL, 0,0);
if (element < 3) {
//Si on selectionne une chaine, un entier ou un bool on affiche l'edit box sinon on affiche la combo
ShowWindow(editbox,SW_SHOW);	
ShowWindow(combo1_2, SW_HIDE);
}
else {
ShowWindow(combo1_2,SW_SHOW);
ShowWindow(editbox, SW_HIDE);
}
//On récupére les valeur de la deuxieme combo
Recup(bRet,MonString,RetTaille,hWnd,hComboBox1,combo1_2 );

[...suite du code]


Lorsque je lance mon bordel, l'affichage est ok, (mais le texte en gras, comment je peux le changer d'ailleur?) mais je ne peux pas selectionner un item dans la deuxieme combobox, le choix est automatiquement refusé. Savez vous pourquoi?
Merci

3 réponses

Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
Salut,
Normalement, le traitement de CBN_SELENDOK doit être fait séparément pour chacun des combobox. Apparemment, ce n'est pas le cas dans ton code. Essaie de faire comme ceci par exemple:
if(HIWORD(wParam)==CBN_SELENDOK && (HWND)lParam==hComboBox1)
{
    //Traitement pour le premier combobox:
    element=....
    //...
    return 0;
}
if(HIWORD(wParam)==CBN_SELENDOK && (HWND)lParam==combo1_2)
{
    //Traitement pour le deuxième  combobox:
    //....
    return 0;
}

Pour changer la police d'un contrôle, utilise le message WM_SETFONT.
Messages postés
8
Date d'inscription
mercredi 16 décembre 2009
Statut
Membre
Dernière intervention
10 juin 2010

Merci ca marche beaucoup mieux... Mais j'ai encore un probleme mais avec un bouton ce coup ci :D
Dans le case WM_PARAM:
if(HIWORD(wParam)==ID_BUTTON_1)
{
    //Traitement
}


Mais ca marche pas des masses...
t'as une idée ?
Merci
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
Il faut mette LOWORD au lieu de HIWORD