我本来只想在根节点的下一个节点添加图标,但是在SetImageList后,所有的根节点默认都会添加上一个图标,怎么样才能把根节点的图标给去掉。
m_ilImageList.Create(16,16,ILC_COLOR32|ILC_MASK,4,4);      
   m_ResultList.GetTreeCtrl().SetImageList(&m_ilImageList, LVSIL_NORMAL);
   m_nIconUser = m_ilImageList.Add(AfxGetApp()->LoadIcon(IDR_LANTOOLBAR));
            hRoot = m_ResultList.GetTreeCtrl().InsertItem(_T("aaaa"));
         

解决方案 »

  1.   

    很容易啊:
    hRoot = m_ResultList.GetTreeCtrl().InsertItem(_T("aaaa"),-1,-1);
    后面两个参数表示你选择的图标序号。如果你不写,就相当于默认为0,自然有图标了。不需要就写-1
      

  2.   

    你说的根节点只是的ROOT 节点还是有子节点的节点?
      

  3.   

    回复2L:
        没有用,试过仍然会显示第0个图标。
    回复3L:
        我不想在根节点上和子节点的节点上显示图标,只想在子节点上显示图标。
        举例: 我只希望在bbb上添加图标,但每次aaa和ccc总是会加上图标
            -aaa
              -bbb
                 ccc
      

  4.   

    CTreeCtrl::InsertItem();HTREEITEM InsertItem(
       LPTVINSERTSTRUCT lpInsertStruct 
    );
    HTREEITEM InsertItem(
       UINT nMask,
       LPCTSTR lpszItem,
       int nImage,
       int nSelectedImage,

       UINT nState,
       UINT nStateMask,
       LPARAM lParam,
       HTREEITEM hParent,
       HTREEITEM hInsertAfter 
    );
    HTREEITEM InsertItem(
       LPCTSTR lpszItem,
       HTREEITEM hParent = TVI_ROOT,
       HTREEITEM hInsertAfter = TVI_LAST 
    );
    HTREEITEM InsertItem(
       LPCTSTR lpszItem,
       int nImage,
       int nSelectedImage,

       HTREEITEM hParent = TVI_ROOT,
       HTREEITEM hInsertAfter = TVI_LAST
    );nImage
    Index of the item's image in the tree view control's image list. nSelectedImage
    Index of the item's selected image in the tree view control's image list. 
      

  5.   

    回复 happyparrot(快乐鹦鹉) :    如果你的是好的,那我把我的发下,你看下是不是哪儿写的有问题。我写的测试程序,同样存在问题,我用的是vc6。      
            CImageList m_ilImageList; 
    m_ilImageList.Create(16,16,ILC_COLOR32|ILC_MASK,4,4);       m_Tree.SetImageList(&m_ilImageList, LVSIL_NORMAL);
    int m_nIconUser = m_ilImageList.Add(AfxGetApp()->LoadIcon(IDR_MAINFRAME));
    HTREEITEM hRoot, hItem;
    hRoot = m_Tree.InsertItem("aaa", -1, -1);
    hItem = m_Tree.InsertItem("bbb", 0, 0, hRoot);
    回复 VisualEleven(Eleven[兔子党组织部长]):所有的函数我都用过一遍了
      

  6.   

    用state imagem_treeCtrl.SetImageList(&stateImageList, TVSIL_STATE);HTREEITEM hRoot = m_treeCtrl.InsertItem(_T("Root"));//stateImageList中第2个图标作为hRoot项的state image, 若不想该项有图标,则设置为0即可,
    //也就是说stateImageList中的第一个图标不可以作为state image.
    m_treeCtrl.SetItemState(hRoot,INDEXTOSTATEIMAGEMASK(1), TVIS_STATEIMAGEMASK);//hRoot项没有state image
    m_treeCtrl.SetItemState(hRoot, 0,TVIS_STATEIMAGEMASK);