[MFC] Ajouter des elements a une CListView ?

Ajouter des elements a une CListView ? [MFC] - C++ - Programmation

Marsh Posté le 26-02-2003 à 11:21:22    

Voila, chui en train de galerer sur un truc.. j'ai une CListView, et j'ai regarde la doc, mais impossible de trouver comment faire pour ajouter un element dedans [:sisicaivrai]
 
et InsertItem ne semble pas marcher... :/
 
qqun a une idee ?
 :hello:


---------------
Filmstory : gardez trace des films que vous avez vu ! :D
Reply

Marsh Posté le 26-02-2003 à 11:21:22   

Reply

Marsh Posté le 26-02-2003 à 11:50:08    

freds45 a écrit :

Voila, chui en train de galerer sur un truc.. j'ai une CListView, et j'ai regarde la doc, mais impossible de trouver comment faire pour ajouter un element dedans [:sisicaivrai]
 
et InsertItem ne semble pas marcher... :/
 
qqun a une idee ?
 :hello:  


 
Dis plutôt que t'arrive pas à te servir d'InsertItem...

Reply

Marsh Posté le 26-02-2003 à 11:57:44    

El_gringo a écrit :


 
Dis plutôt que t'arrive pas à te servir d'InsertItem...


 

Code :
  1. CUdbView::CUdbView()
  2. {
  3. // TODO: add construction code here
  4. InsertItem(0,"test" );
  5. }


 
ma classe CudbView est derivee de CListView, mais ...
 


Compiling...
udbView.cpp
C:\Program Files\Microsoft Visual Studio\MyProjects\udb\udbView.cpp(41) : error C2039: 'InsertItem' : is not a member of 'CUdbView'
        c:\program files\microsoft visual studio\myprojects\udb\udbview.h(15) : see declaration of 'CUdbView'
Error executing cl.exe.


 
 
:/


Message édité par freds45 le 26-02-2003 à 11:58:22

---------------
Filmstory : gardez trace des films que vous avez vu ! :D
Reply

Marsh Posté le 26-02-2003 à 12:08:40    

Est-ce que ta classe CUdbView Vhérite au moins de CListView ?


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 26-02-2003 à 12:38:24    

Harkonnen a écrit :

Est-ce que ta classe CUdbView Vhérite au moins de CListView ?


 
 

Code :
  1. class CUdbView : public CListView


 
donc je vois pas ce qui cloche [:spamafote]

Reply

Marsh Posté le 26-02-2003 à 14:00:32    

:heink:
Ton projet, c'est une MFC Application, ou un Win32 project ?


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 26-02-2003 à 14:07:25    

Harkonnen a écrit :

:heink:
Ton projet, c'est une MFC Application, ou un Win32 project ?


 
MFC :/


---------------
Filmstory : gardez trace des films que vous avez vu ! :D
Reply

Marsh Posté le 26-02-2003 à 14:12:06    


bizarre .... :??:
tu peux me zipper l'ensemble de ton projet et me l'envoyer sur mon mail (cf profil) ?
je regarderais chez moi ce soir si tu veux...


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 26-02-2003 à 14:23:21    

Harkonnen a écrit :


bizarre .... :??:
tu peux me zipper l'ensemble de ton projet et me l'envoyer sur mon mail (cf profil) ?
je regarderais chez moi ce soir si tu veux...


 
oue si tu veux... enfin tu vas voir, c'est ridicule comme truc  :whistle:


---------------
Filmstory : gardez trace des films que vous avez vu ! :D
Reply

Marsh Posté le 26-02-2003 à 14:26:00    

freds45 a écrit :


 
oue si tu veux... enfin tu vas voir, c'est ridicule comme truc  :whistle:  


peu importe ! je suis curieux de connaitre l'origine de cette erreur


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 26-02-2003 à 14:26:00   

Reply

Marsh Posté le 26-02-2003 à 21:05:36    

Bon, j'ai vu d'ou venait ton problème, ou plutot TES problèmes...
 
Allons y :
 

  • Déjà, tu remplis le ListView dans le constructeur de la classe ! Ce n'est pas du tout ce qu'il faut faire. La fonction OnInitialUpdate est faite pour ça. Elle est appelée avant le dessin de la fenêtre, et tu dois donc y placer toutes les initialisations de ta vue. Le problème, c'est que tu n'en a pas. Moi je pense que tu as du créer un projet, dérivé de CView et que tu as rajouté le "public CListView" toi même dans le .h. Malheureusement, la classe de base appelée dans PreCreateWindow était encore CView. Tu aurais pu attendre longtemps l'affichage de ton item. Il ne faut pas faire comme ça : dans la dernière étape de création du projet MFC, tu as la possibilité de choisir la classe de base. C'est ici qu'il faut indiquer CListView, ça te crééra le nécessaire, dont la fonction OnInitialUpdate, dans laquelle tu pourras remplir ton constructeur.


  • Ensuite, comme disait El_Gringo, tu ne sais pas utiliser InsertItem. En effet, il faut lui passer une structure LV_ITEM en paramètre, que tu rempliras selon tes souhaits. Cf MSDN pour plus d'infos sur cette structure.


  • Enfin, le message d'erreur que tu obtiens est du au fait que InsertItem n'est pas une fonction membre de CListView, mais de CListCtrl. CListCtrl est la classe encapsulant le controle ListView. Tu dois donc récupérer la CListCtrl associée à ta CListView via la fonction membre GetListCtrl(), qui te renvoie une référence au CListView associé.


Ce que je te conseille : recréé un projet en indiquant correctement CListView comme classe de base dans la dernière étape de l'assistant de création de projet MFC. Place ensuite dans la fonction OnInitialUpdate() le code suivant :
 

Code :
  1. CListCtrl& ListCtrl = GetListCtrl();
  2. LV_ITEM lvi;
  3. lvi.mask = LVIF_TEXT;
  4. lvi.iItem = 0;
  5. lvi.iSubItem = 0;
  6. lvi.pszText = _T("test" );
  7. ListCtrl.InsertItem(&lvi);


 
Ca fonctionnera correctement.
 
Dernier conseil : apprends quand même à lire les docs.
 
:hello:


Message édité par Harkonnen le 26-02-2003 à 21:07:35

---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 26-02-2003 à 21:29:29    

Merci bcp pour tout ca  :jap:  
 
l'InsertItem était là, mais c'était plus au départ pour voir comment faire pour rajouter un élément dans la liste, le projet se résumait pas seulement à  créer une liste;)
 
J'avais regardé dans l'aide, mais c'est qd même chaud à comprendre :/
 
Je regarderai et appliquerai tout ca demain matin :)
 
 
:hello:  


---------------
Filmstory : gardez trace des films que vous avez vu ! :D
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed