IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

Problème de sélection d'une chaîne dans une combo box


Sujet :

MFC

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 78
    Par défaut Problème de sélection d'une chaîne dans une combo box
    Bonsoir,

    Dans mon application, il y a une dialogue box contenant une combo box avec "drop down list".

    Pour sélectionner une string dans la liste j'utilise SelectString qui fonctionne parfaitement car en faisant suivre l'appel à cette méthode par GetCurSel, on obtient bien l'index correspondant à la string sélectionnée.

    Cependant en cliquant sur un bouton de la boîte de dialogue et en appelant GetCurSel dans la méthode associée au bouton, on ne retrouve plus la sélection, GetCurSel retourne CB_ERR.

    Il n'y a que la sélection manuelle, à l'aide de la souris qui permet de conserver l'index.

    Où est l'erreur?

  2. #2
    Membre émérite
    Avatar de Spout
    Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2007
    Messages : 904
    Par défaut
    Salut,

    Citation Envoyé par MSDN
    Return value : The zero-based index of the currently selected item in the list box of a combo box, or CB_ERR if no item is selected.
    C'est donc qu'aucune ligne n'est sélectionnée dans ton combo box.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 147
    Par défaut
    Est ce que tu as testés la valeur retournée par le SelectString ?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 78
    Par défaut
    SelectString retourne bien l'indice correspondant à la position de la chaîne dans la liste donc la sélection est effective.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 147
    Par défaut
    J'ai fait un test en mettant une Combo (en Drop List) et un bouton dans une boite de dialogue.
    Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    BOOL CTestDlg::OnInitDialog()
    {
    	CDialog::OnInitDialog();
     
    	// Set the icon for this dialog.  The framework does this automatically
    	//  when the application's main window is not a dialog
    	SetIcon(m_hIcon, TRUE);			// Set big icon
    	SetIcon(m_hIcon, FALSE);		// Set small icon
     
    	m_cCombo.AddString("Item 1");
    	m_cCombo.AddString("Item 2");
    	m_cCombo.AddString("Item 3");
    	m_cCombo.AddString("Item 4");
    	m_cCombo.AddString("Item 5");
    	m_cCombo.AddString("Item 6");
     
     
    	int Idx = m_cCombo.SelectString(-1, "Item 3");
    	Idx = m_cCombo.GetCurSel();
    	CString buf;
    	buf.Format("Index : %d", Idx);
    	MessageBox(buf);
     
     
    	return TRUE;  // return TRUE  unless you set the focus to a control
    }
     
    ...
     
     
    void CTestDlg::OnButton1() 
    {
    	int Idx = m_cCombo.GetCurSel();
     
    	CString buf;
    	buf.Format("Index : %d", Idx);
    	MessageBox(buf);
     
    }
    Je n'ai aucun problème. L'index retourné par GetCurSel quand on appuie sur le bouton est le bon.
    Pourrais-tu faire le même test à partir d'une appli vierge ?

  6. #6
    Membre émérite
    Avatar de Spout
    Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2007
    Messages : 904
    Par défaut
    Citation Envoyé par whitebird001 Voir le message
    SelectString retourne bien l'indice correspondant à la position de la chaîne dans la liste donc la sélection est effective.
    Peux-tu nous montrer comment tu t'y prends (code minimal recompilable) ?

Discussions similaires

  1. [XL-2007] problème de codage en vba ("copie d'une partie d'une cellule dans une cellule vide")
    Par skipeemed dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 26/10/2010, 17h01
  2. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 10h13
  3. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48
  4. Trouver la position d'une chaîne dans une chaîne
    Par taka10 dans le forum Langage
    Réponses: 1
    Dernier message: 03/01/2007, 23h18
  5. Réponses: 4
    Dernier message: 11/08/2006, 13h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo