我希望在树中每个ITEM显示是图片+文字的显示方式,就好像QQ里面的好友一样,左边是图片然后是好友名字。
试了半天都不行,网上找了好多代码都不行。请教各位大虾。
CImageList m_imageList;
//创建CImageList对象 
m_imageList.Create(16, 16, ILC_COLOR8, 0, 10); 
//加载图标 
m_imageList.Add(AfxGetApp()->LoadIcon(IDI_ICON1));
CTreeCtrl *tree = (CTreeCtrl *)GetDlgItem(IDC_TREE1); tree->SetImageList(&m_imageList,TVSIL_NORMAL);
TV_INSERTSTRUCT tvinsert;//声明一个结构体,下面是对他的一系列初始化  tvinsert.hParent = NULL;
 tvinsert.hInsertAfter = TVI_LAST;
 tvinsert.item.mask = TVIF_IMAGE | TVIF_SELECTEDIMAGE| TVIF_TEXT;
 tvinsert.item.hItem = NULL;
 tvinsert.item.state = 0;
 tvinsert.item.stateMask = 0;
 tvinsert.item.cchTextMax = 6; 
 tvinsert.item.iSelectedImage = 1;  tvinsert.item.cChildren = 0;
 tvinsert.item.lParam = 0;
 
 tvinsert.item.pszText = "Homer";//设置文本
 tvinsert.item.iImage = 2;//设置相关的图像列表中的图像
 HTREEITEM hDad = tree ->InsertItem(&tvinsert);//加入到树的节点中
 tvinsert.item.pszText = "Marge";
 HTREEITEM hMom = tree->InsertItem(&tvinsert);  // 第二层的节点--父节点为hDaD
 tvinsert.hParent = hDad;//声明其父节点
 tvinsert.item.pszText = "Bart";
 tvinsert.item.iImage = 3;
 tree->InsertItem(&tvinsert);
 tvinsert.item.pszText = "Lisa";//只对需要改变的量进行改变就可以
 tree->InsertItem(&tvinsert);  // 第二层的节点--父节点为hMum
 tvinsert.hParent = hMom;
 tvinsert.item.pszText = "Bart";
 tvinsert.item.iImage = 4;
 tree->InsertItem(&tvinsert);
 tvinsert.item.pszText = "Lisa";
 tree->InsertItem(&tvinsert);
 tvinsert.item.pszText = "Dilbert";
 HTREEITEM hOther = tree->InsertItem(&tvinsert);  // 第三层节点--父节点为hOrher
 tvinsert.hParent = hOther;
 tvinsert.item.pszText = "Dogbert";
 tvinsert.item.iImage = 7;
 tree->InsertItem(&tvinsert);
 tvinsert.item.pszText = "Ratbert";
 tree->InsertItem(&tvinsert);

解决方案 »

  1.   

    难道是tvinsert.item.iImage的问题????请教各位
      

  2.   

    m_imageList.Create(16, 16, ILC_COLOR8, 0, 0);
    另外,你的IDI_ICON1存在吗?
      

  3.   

    CImageList m_imageList;
    是栈变量 被回收了
      

  4.   

    改为
    CImageList *m_imageList;
      

  5.   

    将CImageList m_imageList设为类的成员函数了,其他没变还是没显示出来呢
      

  6.   

    你得将其声明为指针类型:
    CImageList *m_imageList;
      

  7.   

    ok。搞定了。再把tvinsert.item.iImage = 0;就可以了。。谢谢各位
      

  8.   

    m_imagelist 里面有几个图标?