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 :

[MFC]Value Controle dans un comboBox


Sujet :

MFC

  1. #1
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2002
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2002
    Messages : 106
    Points : 113
    Points
    113
    Par défaut [MFC]Value Controle dans un comboBox
    Salut à tous,
    dans mon application, j'utilise un comboBox, à chaque fois que je change la sélection, je souhaite récupérer la nouvelle valeur choisie.
    J'ai donc créée la fonction OnSelChange et au départ j'ai voulu récupérer la nouvelle valeur avec AppWizzard en utilisant une variable Value associée à ce Combo comme je fais avec les edit box.
    Cependant cette variable restait toujours à "" et j'ai finalement du utiliser la fonction GetLBText qui elle marche trés bien.

    Dés fois que voila le code que j'ai utilisé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void CPreparationPageCaracterPhy::OnSelchangeChoixNatureSolide() 
    {
    	UpdateData(TRUE);
    	int cur = m_NatureSolideCtrl.GetCurSel(); 
    	m_NatureSolideCtrl.GetLBText(cur,strNatureSolide);
                    ...
    }
    m_NatureSolideCtrl étant la variable de Control sur mon ComboBox (elle marche trés bien).

    Au début j'avais tout simplement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UpdateData(TRUE);
    m_strNatureSolide...;
    Où m_strNatureSolide est ma variable Value (toujours égale à "").

    Ma question est donc la suivante: Est-ce que la variable Value créée par AppWizzard ne marche pas pour les Combo ou est-ce moi qui suit un manche (j'obterais plutot pour cette solution)? Et dans ce cas, qu'est-ce qui ne va pas dans mon code?

    Merci d'avance pour toute réponse

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut ,une bonne nouvelle , t'es pas manche ou alors on est deux ,j'ai jamais recuperer la valeur par une variable dans une combo ,mais par getcursel et compagnie...

  3. #3
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2002
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2002
    Messages : 106
    Points : 113
    Points
    113
    Par défaut
    OK merci de me rassurer
    Le lundi (surtout en début d'aprés midi) j'ai comme une grosse baisse de régime cérébrale ce qui fait que je suis jamais trop sur de ce que je fais pendant cette période.

    Dommage que ce "bug" ne soit indiqué nul part (en tout cas à priori pas dans msdn ni sur le site de microsoft)

  4. #4
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    c'est remoi ,
    finalement peut etre une explication je suis peut être manche aussi ...
    quand on regarde les macros DDX_CBSTring on s'apercoit qu'elle fait GetwindowText .
    donc ca marche que si la combo est en mode edit (dropdown) .
    si on attache la variable et que l'on change le mode apres patatra ....
    dans ce cas d'apres le code que je vois qui'il suffirait de remplacer :
    DDX_CBString par DDX_LBString
    j'ai pas essaye,c'est que j'utilises pas ces modes moi je me suis fait une combo ou la variable et le control ne font qu'un et par le biais des operateurs affectation ou (const char *)etc .. j'affecte/recupere la valeur en temps reel sans faire updateData.

  5. #5
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2002
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2002
    Messages : 106
    Points : 113
    Points
    113
    Par défaut
    Re,
    merci de te pencher comme cela sur mon problème.
    J'ai donc essayé ta solution (j'aurais du me poser la question de savoir si le code de classWizzard engendré était le bon, bien vu de ta part d'y avoir pensé) mais malheureusement les résultats semblent être les même.

    Honnêtement j'ai juste essayé vite fait sans chercher à aller plus loin car on doit fournir la première version du logiciel aux futurs utilisateurs dans deux semaines donc en ce moment je peux pas trop perdre de temps (je m'accorde toute fois quelques pauses sur developpez )

    Merci encore pour avoir cherché une solution

  6. #6
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    apres verifications effectivement ça marche pas j'ai refait ma propre version
    "transparente" pour l'utilisateur la c'est bon:
    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
     
    #define DDX_LBString(pdx,nidc,value) DDX_LBCString(pdx,nidc,value)
    void AFXAPI DDX_LBCString(CDataExchange* pDX, int nIDC, CString& value)
    {
    	HWND hWndCtrl = pDX->PrepareCtrl(nIDC);
    	if (pDX->m_bSaveAndValidate)
    	{
    		CComboBox *pCombo=(CComboBox *)pDX->m_pDlgWnd->GetDlgItem(nIDC);
    		int nIndex = pCombo->GetCurSel();
    		if (nIndex !=LB_ERR) pCombo->GetLBText(nIndex,value);		
    		else
    		{
    			// no selection
    			value.Empty();
    		}
    		value.ReleaseBuffer();
    	}
    	else
    	{
    		CComboBox *pCombo=(CComboBox *)pDX->m_pDlgWnd->GetDlgItem(nIDC);
    		// set current selection based on data string
    		if(pCombo->SelectString(0,value)==LB_ERR)
    		{
    			// no selection match
    			TRACE0("Warning: no listbox item selected.\n");
    		}
    	}
    }
    ca fonctionne tres bien comme ça ,je sais pas ce qu'ils ont foutus j'ai pas chercher à approfondir le sujet..

  7. #7
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2002
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2002
    Messages : 106
    Points : 113
    Points
    113
    Par défaut
    Merci pour tout

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MFC] DirectX, Controle dans CFormView
    Par Astraya dans le forum Visual C++
    Réponses: 1
    Dernier message: 03/04/2008, 15h21
  2. Réponses: 3
    Dernier message: 27/03/2008, 11h53
  3. controler le format de saisie dans un combobox
    Par oscar.cesar dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 15/03/2008, 13h26
  4. MFC image video dans une picture control
    Par PePedu78 dans le forum MFC
    Réponses: 1
    Dernier message: 11/01/2008, 10h23
  5. Réponses: 12
    Dernier message: 08/02/2006, 17h28

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