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 :

ajouter un element � une ListBox


Sujet :

MFC

  1. #1
    Membre confirm�
    Femme Profil pro
    D�veloppeur Web
    Inscrit en
    Mai 2009
    Messages
    164
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    �ge : 36
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur Web

    Informations forums :
    Inscription : Mai 2009
    Messages : 164
    Par d�faut ajouter un element � une ListBox
    bonjour,

    dans mon projet, j'ouvre une CDialog, qui est compos� d'une ListBox.
    dans mon application, je rempli une liste de CString. et c'est cette liste que je vais mettre dans la listBox.
    mon code:

    dans ma class application:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
     
     
    [...]
    CDiagFichierPlusRecent diag;
    diag.setList(listeFichierPlusRecent);
    diag.DoModal();
    [...]
    dan ma classe CDiag
    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
     
    void CDiagFichierPlusRecent::setList(list<CString> listeFichier)
    {
    	//CString str;
    	list<CString>::iterator it;
    	for(it=listeFichier.begin(); it!=listeFichier.end();it++)
    	{
    		//char * texte= (*it).GetBuffer((*it).GetLength()+1);
    		//str = (*it);
    	            //str.Format("%s.",(*it));
                             // str.Format(_T("blabla"));
                             // str= _T("blabla");
    		//m_listBox.AddString(str);
    		//m_listBox.AddString(texte);
    		m_listBox.AddString((*it));
    	}
     
    }
    mon probleme.. le addString ne marche pas. vous avez en commentaire les diff�rents essais que j'ai effectu�.
    mais � chaque ajout j'ai un message d'erreur qui apparait et ma listBox reste vide...
    je pense que c'est un probleme de conversion LPCSTR -->CString..
    j'ai d�j� eu plusieurs fois le probl�me de conversion mais jusque la j'ai pu recr�er mes propres m�thodes... sauf que la je seche...

  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
    Par d�faut
    il serait judicieux de passer listfichier par r�f�rence et non par copie.
    tu rentres dans la boucle d'it�ration ?
    tu pourrais rajouter un TRACE des diff�rentes valeurs avant le addstring pour v�rifier le contenu.

  3. #3
    Membre confirm�
    Femme Profil pro
    D�veloppeur Web
    Inscrit en
    Mai 2009
    Messages
    164
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    �ge : 36
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur Web

    Informations forums :
    Inscription : Mai 2009
    Messages : 164
    Par d�faut
    Citation Envoy� par farscape Voir le message
    il serait judicieux de passer listfichier par r�f�rence et non par copie.
    tu rentres dans la boucle d'it�ration ?
    tu pourrais rajouter un TRACE des diff�rentes valeurs avant le addstring pour v�rifier le contenu.
    ma liste de fichier est rempli et oui je rentre dans la boucle, lorsque j'affecte mon (*it) a str par exemple, str prend bien la valeur de (*it). c'est seulement au moment du AddString(..) qu'une boite de dialogue apparait. le titre de la boite de dialogue c'est " Microsoft Visual C++ Debug Library. " apres dans la boite de dialogue il y a marqu�: "Debut Assertion failed" etc.

    mais c'est pas une erreur qui arrete mon application.. il y a trois bouton "Ignorer", "recommencer", "abandonner". si j'appuie sur Ignorer, mon programme continue.. il entre a nouveau dans la boucle, avec l'element suivant de ma liste.. il le reaffecte bien a la variable... et a nouveau, au AddString RE message d'erreur.. et comme ca jusqu'� ce que le parcours de ma liste soit fini. ensuite ma boite de dialogue apparait mais avec rien dans la listBox

  4. #4
    Membre �prouv�
    Avatar de TheGzD
    Homme Profil pro
    Ing�nieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, Puy de D�me (Auvergne)

    Informations professionnelles :
    Activit� : Ing�nieur/ Docteur en Informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Par d�faut
    t'es s�r que ta liste est vraiment cr��e ?

  5. #5
    Membre confirm�
    Femme Profil pro
    D�veloppeur Web
    Inscrit en
    Mai 2009
    Messages
    164
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    �ge : 36
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur Web

    Informations forums :
    Inscription : Mai 2009
    Messages : 164
    Par d�faut
    Citation Envoy� par TheGzD Voir le message
    t'es s�r que ta liste est vraiment cr��e ?
    que ma liste est cr��e? tu veux dire la "listeFichier" que j'ai en parametre?
    si c'est celle l� oui, je suis sure, j'ai mis des point d'arret j'ai regard�, et ma liste contient bien des CString.

    j'en suis sure aussi parce que je passe dans la boucle.. hors si ma liste etait vide elle n'y entrerai pas..

  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
    Par d�faut
    tu peux poster la ligne de code qui est affich�e pour l'assertion d'erreur ?

  7. #7
    Membre confirm�
    Femme Profil pro
    D�veloppeur Web
    Inscrit en
    Mai 2009
    Messages
    164
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    �ge : 36
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur Web

    Informations forums :
    Inscription : Mai 2009
    Messages : 164
    Par d�faut
    Citation Envoy� par farscape Voir le message
    tu peux poster la ligne de code qui est affich�e pour l'assertion d'erreur ?
    je comprend pas ce que je dois poster....
    je mets en piece l'erreur qui s'affiche...
    Images attach�es Images attach�es  

  8. #8
    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
    Par d�faut
    tu presses le bouton recommencer et tu verras le code en question qui provoque l'erreur.
    dans mon tuto le dernier et celui de vc6 il y a un chapitre sur le debugage qui explique tout cela..

  9. #9
    Membre confirm�
    Femme Profil pro
    D�veloppeur Web
    Inscrit en
    Mai 2009
    Messages
    164
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    �ge : 36
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur Web

    Informations forums :
    Inscription : Mai 2009
    Messages : 164
    Par d�faut
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
     
    AFXWIN_INLINE int CListBox::AddString(LPCTSTR lpszItem)
    	{ ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, LB_ADDSTRING, 0, (LPARAM)lpszItem); }
    _AFXWIN_INLINE int CListBox::DeleteString(UINT nIndex)
    le point d'arret se situe au niveau du "ASSERT". c'est dans la classe afxwin2.h

  10. #10
    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
    Par d�faut
    ben voila le probl�me est r�solu non ?
    m_hwnd est null ce qui veut dire que ta lisbox n'est pas initialis�e graphiquement .
    voir faq :http://cpp.developpez.com/faq/vc/ind...nge#UpdateData

  11. #11
    Membre confirm�
    Femme Profil pro
    D�veloppeur Web
    Inscrit en
    Mai 2009
    Messages
    164
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    �ge : 36
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur Web

    Informations forums :
    Inscription : Mai 2009
    Messages : 164
    Par d�faut
    Citation Envoy� par farscape Voir le message
    ben voila le probl�me est r�solu non ?
    m_hwnd est null ce qui veut dire que ta lisbox n'est pas initialis�e graphiquement .
    voir faq :http://cpp.developpez.com/faq/vc/ind...nge#UpdateData
    c'est ce que ca veut dire...
    vais voir ton lien

  12. #12
    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
    Par d�faut
    Citation Envoy� par faq
    Toute variable contr�le d�clar�e dans une fen�tre dialogue (CDialog ou CFormView etc ..) qui ne fera pas partie de la fonction DoDataExchange ne sera pas � subclass�e � son handle de fen�tre sera �gal � NULL et son utilisation provoquera une assertion.

  13. #13
    Membre �prouv�
    Avatar de TheGzD
    Homme Profil pro
    Ing�nieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, Puy de D�me (Auvergne)

    Informations professionnelles :
    Activit� : Ing�nieur/ Docteur en Informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Par d�faut
    Citation Envoy� par leame Voir le message
    que ma liste est cr��e? tu veux dire la "listeFichier" que j'ai en parametre?
    si c'est celle l� oui, je suis sure, j'ai mis des point d'arret j'ai regard�, et ma liste contient bien des CString.

    j'en suis sure aussi parce que je passe dans la boucle.. hors si ma liste etait vide elle n'y entrerai pas..
    je parlais de ta list box

  14. #14
    Membre confirm�
    Femme Profil pro
    D�veloppeur Web
    Inscrit en
    Mai 2009
    Messages
    164
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    �ge : 36
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur Web

    Informations forums :
    Inscription : Mai 2009
    Messages : 164
    Par d�faut
    Toute variable contr�le d�clar�e dans une fen�tre dialogue (CDialog ou CFormView etc ..) qui ne fera pas partie de la fonction DoDataExchange ne sera pas � subclass�e � son handle de fen�tre sera �gal � NULL et son utilisation provoquera une assertion.
    bah oui mais elle fait partie de DodataExchange
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
    void CDiagFichierPlusRecent::DoDataExchange(CDataExchange* pDX)
    {
    	CDialog::DoDataExchange(pDX);
    	DDX_Control(pDX, IDC_LIST1, m_listBox); // ici!!
    }



    .....................

    j'ai essay� de mettre le UpdateData(False);
    ca me lance un message:
    une op�ration non prise en charge a �t� tent�e
    ..

  15. #15
    Membre �prouv�
    Avatar de TheGzD
    Homme Profil pro
    Ing�nieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, Puy de D�me (Auvergne)

    Informations professionnelles :
    Activit� : Ing�nieur/ Docteur en Informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Par d�faut
    Seulement tu fais ceci :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    CDiagFichierPlusRecent diag;
    diag.setList(listeFichierPlusRecent); //ici tu utilises des ressources graphiques
    diag.DoModal(); // ici tu instancies les ressources graphiques : tu vois le soucis ?
    passe le setList dans le OnInitDialog de CDiagFichierPlusRecent et je pense que ton pb disparaitra.

  16. #16
    Membre confirm�
    Femme Profil pro
    D�veloppeur Web
    Inscrit en
    Mai 2009
    Messages
    164
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    �ge : 36
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur Web

    Informations forums :
    Inscription : Mai 2009
    Messages : 164
    Par d�faut
    Citation Envoy� par TheGzD Voir le message
    Seulement tu fais ceci :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    CDiagFichierPlusRecent diag;
    diag.setList(listeFichierPlusRecent); //ici tu utilises des ressources graphiques
    diag.DoModal(); // ici tu instancies les ressources graphiques : tu vois le soucis ?
    passe le setList dans le OnInitDialog de CDiagFichierPlusRecent et je pense que ton pb disparaitra.
    en effet en faisant cela �a marche... mais pourquoi de ma fa�on ca ne marche pas??
    parce que l�.. �a m'oblige � faire de ma liste une variable membre de la classe application pour pouvoir la r�cup�rer alors que j'en ai besoin que pour une simple v�rification...

    .................;

    Merci farscape!!
    Merci TheGzD!!

  17. #17
    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
    Par d�faut
    mince je n'avais pas fait attention a la premi�re portion de code du premier post.

    pour r�pondre � ta question:
    http://cpp.developpez.com/faq/vc/ind...ToWorkWithCtrl

    ceci dit je maintiens ma remarque sur le passage par r�f�rence � la place du passage par valeur.
    pourquoi provoquer un copie de la list surtout si elle est importante ...
    �a devrait m�me etre par defaut une r�ference constante.

  18. #18
    Membre confirm�
    Femme Profil pro
    D�veloppeur Web
    Inscrit en
    Mai 2009
    Messages
    164
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    �ge : 36
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur Web

    Informations forums :
    Inscription : Mai 2009
    Messages : 164
    Par d�faut
    Citation Envoy� par farscape Voir le message
    ceci dit je maintiens ma remarque sur le passage par r�f�rence � la place du passage par valeur.
    pourquoi provoquer un copie de la list surtout si elle est importante ...
    �a devrait m�me etre par defaut une r�ference constante.
    sans raison pr�cise.. je passe par r�f�rence quand ma m�thode modifie cette valeur. sinon..... je mets pas par r�f�rence... pourquoi c'est pas bien de mettre juste en param�tre sans passage par r�f�rence?

  19. #19
    Membre �prouv�
    Avatar de TheGzD
    Homme Profil pro
    Ing�nieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, Puy de D�me (Auvergne)

    Informations professionnelles :
    Activit� : Ing�nieur/ Docteur en Informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Par d�faut
    tu perds du temps de calcul et tu utilises plus de m�moire

  20. #20
    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
    Par d�faut
    il me semble avoir r�pondu:
    pourquoi provoquer une copie de la list surtout si elle est importante ...
    ta liste va �tre recr�e par it�ration sur celle d'origine avec le constructeur de copie.
    en gros pourquoi faire perdre du temps et de la m�moire � ton programme ?

+ R�pondre � la discussion
Cette discussion est r�solue.
Page 1 sur 2 12 Derni�reDerni�re

Discussions similaires

  1. [AC-2007] Ajouter mes elements � ma listbox
    Par comme de bien entendu dans le forum VBA Access
    R�ponses: 4
    Dernier message: 06/01/2011, 14h36
  2. Ajouter des valeurs � une listbox multicolonnes
    Par bobosh dans le forum VBA Access
    R�ponses: 1
    Dernier message: 08/10/2008, 09h23
  3. [VB.Net 2005]Ajouter un �l�ment � une listbox
    Par DonF dans le forum Windows Forms
    R�ponses: 2
    Dernier message: 27/09/2006, 13h07
  4. comment ajouter un element � une JList
    Par belassel_z dans le forum Composants
    R�ponses: 1
    Dernier message: 20/05/2006, 12h13

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