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

Visual C++ Discussion :

initialisation d'une combobox dans Visual Studio 2012


Sujet :

Visual C++

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2012
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juillet 2012
    Messages : 19
    Points : 8
    Points
    8
    Par défaut initialisation d'une combobox dans Visual Studio 2012
    Bonjour,
    J'ai instancié une Combobox dans l’éditeur graphique de ma main window et j'ai ajouté une variable via l'assistant "ajout de variable membre". Dans mon .h j'ai donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public:
    CComboBox m_port;
    Dans mon cpp j'ai ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    void CMFCApplication1Dlg::DoDataExchange(CDataExchange* pDX)
    {
    	CDialogEx::DoDataExchange(pDX);
     
    	DDX_Control(pDX, IDC_COMBOBOX1, m_port);
    }
    Je souhaite ainsi récupérer via m_port un objet CCombobox
    pour faire ceci a la fin de la fonction BOOL CMFCApplication1Dlg::OnInitDialog()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    BOOL CMFCApplication1Dlg::OnInitDialog()
    {
    	CDialogEx::OnInitDialog();
             (...)
    	if (NULL!=m_port)
    	{
    		m_port.AddString((CString)"MyString");
     
    	}
    or m_port est systématiquement NULL et aucun item n'est ajouté
    Quelle est donc mon erreur?
    Merci beaucoup pour votre aide eventuelle.

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Je pense qu'il manque UpdateData(TRUE); en début de fonction (j'ignore s'il faut le mettre avant ou après l'appel à la classe mère, par contre).

    Typiquement, dans une fonction pour gérer un événement de boîte de dialogue MFC, on a UpdateData(TRUE) au début, des modifications de champs, puis UpdateData(FALSE) à la fin.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Futur Membre du Club
    Inscrit en
    Juillet 2012
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juillet 2012
    Messages : 19
    Points : 8
    Points
    8
    Par défaut initialisation de combobox
    Merci bien Médinoc! mais cette proposition ne semble rien changer à mon problème, m_port reste NULL.
    Une autre idée?

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 074
    Points : 12 120
    Points
    12 120
    Par défaut
    C'est loin les MFC.

    Je sais plus s'il ne faut pas attendre le WM_CREATE avant de pouvoir accéder aux contrôles.

    OnInitDialog est vraisemblablement trop précoce.

  5. #5
    Futur Membre du Club
    Inscrit en
    Juillet 2012
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juillet 2012
    Messages : 19
    Points : 8
    Points
    8
    Par défaut
    Merci à nouveau pour la réponse.. mais euh franchement c'est un peu vague pour moi, peux tu préciser ta pensée STP. Je sais que les MFC c'est pas tout jeune mais c'est ce que veux mon chef () et puis je pensais que initialiser une combobox restait un besoin assez basique. Seulement j'ai vraiment rien trouvé sur ce sujet sur le net alors si vous connaissez des sources fiables d'infos sur le sujet, je suis preneur!!
    Merci à vous!!

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 074
    Points : 12 120
    Points
    12 120
    Par défaut
    Après vérification, c'est une fausse piste.

    Si c'est des constantes, utilisez le designer pour remplir la ComboBox.

    Cas le plus probable, "IDC_COMBOBOX1" n'est plus un identifiant de contrôle dans les ressources de la boite de Dialogue, chose qui arrive fréquemment quand on renomme ces identifiants.

    Un exemple complet :
    http://www.codeproject.com/Articles/...Initialization

  7. #7
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Citation Envoyé par bacelar Voir le message
    OnInitDialog est vraisemblablement trop précoce.
    WM_INITDIALOG est postérieur à WM_CREATE (d'ailleurs, il me semble qu'une DialogProc ne reçoit jamais WM_CREATE, mais MFC override peut-être ça)
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. comment creer une projet dans visual studio 2008
    Par sousoi dans le forum Visual Studio
    Réponses: 2
    Dernier message: 22/05/2010, 22h21
  2. portee d'une variable dans "visual studio"
    Par liloulinx dans le forum Débuter
    Réponses: 26
    Dernier message: 15/03/2010, 12h32
  3. Ajouter une refrence dans Visual studio 2008
    Par aallal dans le forum Général Dotnet
    Réponses: 4
    Dernier message: 29/09/2008, 12h51
  4. Réponses: 6
    Dernier message: 20/08/2008, 09h59
  5. Mise à jour d'une comboBox dans Visual Studio
    Par lilimilou29 dans le forum VB.NET
    Réponses: 7
    Dernier message: 31/05/2007, 17h04

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