[MFC] CTreeCtrl -> SetImageList

CTreeCtrl -> SetImageList [MFC] - Programmation

Marsh Posté le 23-02-2002 à 13:18:49    

Bonjour,
Je souhaite mettre une icone à coté de chaque élément de mon controle CTreeCtrl. Seulement ce code ne marche pas :
 
CImageList liste;
int i;
TVINSERTSTRUCT id;
 
id.hParent = TVI_ROOT;
id.hInsertAfter = TVI_ROOT;
id.item.mask = TVIF_TEXT;
 
liste.Create(16,16,ILC_COLOR4,0,1);
i = liste.Add(AfxGetApp()->LoadIcon(IDI_CLOSE)); //IDI_CLOSE = Icone 16 couleurs 32x32
 
m_tree.SetImageList(&liste,TVSIL_NORMAL);
 
id.item.mask = TVIF_TEXT|TVIF_IMAGE;
id.item.iImage = i;
 
id.item.pszText = "DuTexte";
m_tree.InsertItem(&id);
 
Ca compile mais ça m'affiche aucune icone (carré vide à coté du texte)

Reply

Marsh Posté le 23-02-2002 à 13:18:49   

Reply

Marsh Posté le 23-02-2002 à 14:25:01    

J'ai dejà utilisé une fois le CTreeCtrl avec les icones mais c'était des icones 16x16. Je ne savais pas qu'on pouvait mettre des icones plus grandes.


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
Reply

Marsh Posté le 23-02-2002 à 14:31:32    

ça vient peut être de la, sinon mon code te parait correct ?

Reply

Marsh Posté le 23-02-2002 à 16:01:18    

C'est marrant, j'ai pas du tout utilisé ça pour le CTreeCtrl.
J'ai retrouvé un bout de code de test que j'avais laissé tomber. Faut dire que les utilisateurs sont peu habitués à la navigation dans les arborescences et je suis passé à des tableaux dans des onglets.
C'est du prototypage donc c'est codé à la bite et au couteau.
 

Code :
  1. // Pour creer la liste des icones :
  2. UINT idBitmapJeu[] = {IDB_LISTE, IDB_MAISON, IDB_PJ, NB_BITMAP};
  3. iconList.Create( 16,16, ILC_COLOR8, NB_BITMAP,1);
  4. iconPtr = new CBitmap*[NB_BITMAP];
  5. for(int k=0; k<NB_BITMAP; k++) {
  6.  iconPtr[k] = new CBitmap;
  7.  iconPtr[k]->LoadBitmap(idBitmapJeu[k]);
  8.  iconList.Add(iconPtr[k],0x0FFFFFF);
  9. }
  10. m_DBTree.SetImageList(&iconList,TVSIL_NORMAL);
  11. // fin du constructeur
  12. // créer l'arbre :
  13. HTREEITEM listePJ = m_DBTree.InsertItem("PJ",0,0);
  14. HTREEITEM pjItem;                               
  15. for(int k=0; k<docJeu.getMaxPJ(); k++) {
  16.     CPJ &aPJ = docJeu.getPJ(k);
  17.     pjItem = m_DBTree.InsertItem(aPJ.getNom(),1,1,listePJ); 
  18. // pjItem servira a attacher les objets du PJ
  19. }


 
Voila m_DBTree est de type CTreeCtrl et InsertItem permet de mettre une chaine, les 2 icones (ouverte/fermée, là j'utilise la même pour les 2) attaché au HTREEITEM fourni en 4ième paramètre.


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
Reply

Marsh Posté le 23-02-2002 à 16:08:10    

merci

Reply

Sujets relatifs:

Leave a Replay

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