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 d'utilisation des ComboBox


Sujet :

MFC

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

    Informations forums :
    Inscription : Avril 2008
    Messages : 89
    Par défaut Problème d'utilisation des ComboBox
    Bonjour,
    Dans un projet MFC, sous Visual studio 2005, je n'arrive pas à ajouter des informations à une combobox.

    Voilà mon 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
     
    CClasses a;
    	int nbUsers=0;
    	int nIndex;
    	char fichierSignet[14]="users.lock";
    	if (a.fichierExiste(fichierSignet))
    	{
    		std::ifstream fichier(fichierSignet, std::ios::in);
    		if (fichier)
    		{
    			string identifiant, pass, separateur;
    			while (!fichier.eof())
    			{
    			//Cette boucle détermine le nombre d'utilisateurs enregistrées, ainsi que leur identifiant
    				nbUsers++;
    				getline(fichier, identifiant);
    				getline(fichier, pass);
    				getline(fichier, separateur);
    				nIndex= m_cbUser.InsertString(-1, a.StringToCString(identifiant));
    			}
    			fichier.close();
    		}
    		else
    		{
    			MessageBox(_T("Impossible de lire le fichier d'utilisateurs"));
    		}
    	}
    	else
    	{
    		MessageBox(_T("Le fichier d'utilisateurs n'existe pas"));
    	}
    En fait, je lis des données dans un fichier texte, et les affiche dans cette ComboBox (il s'agit d'une liste d'utilisateurs, pour choisir celui à supprimer).
    Mon fichier est de la forme suivante :

    Identifiant user 1
    pass user 1

    Identifiant user 2
    pass user 2

    Identifiant user 3
    pass user 3

    ...
    Je ne pense pas que ça vienne de là, car si je met une chaîne de caractère à la main, c'est pareil.

    Voilà le message d'erreur :

    Debug Assertion Failed!

    Program: ...
    File: f:\rtm\vctools\vc7libs\ship\atlmfc\include\afxwin2.inl
    Line: 799

    For more information on how your program can cause an assertion failure, see the Visual C++ documentation on asserts.
    Merci d'avance pour votre aide

  2. #2
    Membre confirmé
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Avril 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Avril 2008
    Messages : 71
    Par défaut
    Salut, dans le programme que tu as mis tu n'affecte jamais ta combobox tu ne fais que lire ton fichier texte.
    L'erreur que tu as viens du fais que tu n'affectes rien
    "Debug Assertion Failed"
    tu ne donnes pas la destination de ton affectation.
    Je te conseil d'utiliser le debugger et de mettre un point d'arrêt sur cette partie pour voir exactement ou tu plantes.

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

    Informations forums :
    Inscription : Avril 2008
    Messages : 89
    Par défaut
    Finalement, j'ai fait différement, (j'avais pas le temps de faire comme ça).

    Tu peux juste m'expliquer comment donner la destination de mon affectation, pour la prochaine fois où je voudrais utiliser ça?

    Je plantais sur la ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nIndex= m_cbUser.InsertString(-1,a.StringToCString(identifiant));
    m_cbUser était déclaré en CComboBox, dans le fichier.h.

    Merci

  4. #4
    Membre chevronné
    Avatar de PetitPapaNoël
    Développeur informatique
    Inscrit en
    Septembre 2006
    Messages
    559
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Par défaut
    Bonjour,

    Si m_cbUser est une variable de type CCombobox rattachée à un contrôle de ta fenêtre, InsertString doit fonctionner, à condition que a.StringToCString(identifiant) soit une chaîne de caractères et que cette méthode soit appelée après l'exécution du DoDataExchange de la fenêtre (pendant ou après son initialisation).

  5. #5
    Membre chevronné Avatar de stephdim
    Profil pro
    Inscrit en
    Août 2007
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 462
    Par défaut
    salut,

    où fais tu ton remplissage de ta combo box ?

    à mon avis, tu le fais alors que le controle n'est pas encore construit, d'où l'assertion ...

    à faire dans OnInitDialog(), pas avant !

    @+

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 89
    Par défaut
    Je pense que le problème vient du fait que m_cbUser n'est pas rattaché à ma fenêtre. Je ne sais comment faire ça, et dans le fichier.h de la boite de dialoque j'ai juste mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CComboBox m_cbUser

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 89
    Par défaut
    Citation Envoyé par stephdim Voir le message
    salut,

    où fais tu ton remplissage de ta combo box ?

    à mon avis, tu le fais alors que le controle n'est pas encore construit, d'où l'assertion ...

    à faire dans OnInitDialog(), pas avant !

    @+
    J'ai essayé dans onPaint, et au clic sur un bouton.

  8. #8
    Membre chevronné
    Avatar de PetitPapaNoël
    Développeur informatique
    Inscrit en
    Septembre 2006
    Messages
    559
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Par défaut
    C'est bien ce que je pensais. Tout est expliqué dans la FAQ...

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 89
    Par défaut
    Ok, merci pour le lien, j'avais déjà regardé la FAQ, mais dans les parties spécifiques aux combobox.
    Je n'avais donc pas toutes les bases.

    Merci à tous pour vos messages

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

Discussions similaires

  1. Construire un critère de filtre en utilisant des ComboBox
    Par mary17 dans le forum Windows Forms
    Réponses: 7
    Dernier message: 20/04/2007, 09h19
  2. Questions concernant l'utilisation des ComboBox
    Par philguio dans le forum Windows Forms
    Réponses: 2
    Dernier message: 09/01/2007, 11h26
  3. Problème d'utilisation des files
    Par AraBorLeg dans le forum C
    Réponses: 4
    Dernier message: 06/01/2007, 20h55
  4. Réponses: 1
    Dernier message: 24/11/2006, 16h36
  5. Problème d'utilisation des attributs width et height avec une image distante
    Par Ptit_Mouss dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 21/09/2006, 15h40

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