如题,我给树控件的两个子节点添加图标,并没有给父节点添加,结果它的父节点也都有图标显示 这是为什么呢?
代码:
//首先往imageList里面添两张图
CImageList* imageList=new CImageList();
imageList->Create(19, 19, ILC_COLOR24|ILC_MASK, 20, 1); 
HBITMAP hBitmap = (HBITMAP)LoadImage(NULL,"D:\\Project\\TEMP\\1.bmp",IMAGE_BITMAP,
19,19,LR_CREATEDIBSECTION | LR_DEFAULTSIZE | LR_LOADFROMFILE);
CBitmap* m_bitmap = new CBitmap();
m_bitmap->Attach(hBitmap);
imageList->Add(m_bitmap,RGB(0, 0, 0));HBITMAP hBitmap1 = (HBITMAP)LoadImage(NULL,"D:\\Project\\TEMP\\2.bmp",IMAGE_BITMAP,
19,19,LR_CREATEDIBSECTION | LR_DEFAULTSIZE | LR_LOADFROMFILE);
CBitmap* m_bitmap1 = new CBitmap();
m_bitmap1->Attach(hBitmap1);
imageList->Add(m_bitmap1,RGB(0, 0, 0));//设置TreeCtrl的属性
    DWORD dwStyle = GetWindowLong(m_TreeCtrl.m_hWnd,GWL_STYLE);
    dwStyle |= TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT;
    SetWindowLong(m_TreeCtrl.m_hWnd,GWL_STYLE,dwStyle);//将TreeCtrl与imageList关联起来
m_TreeCtrl.SetImageList(imageList,TVSIL_NORMAL);HTREEITEM hRoot,hItem,hItem1,hItem2,hSubItem,hSubItem1,hSubItem2;
hRoot = m_TreeCtrl.InsertItem("我的电脑");
hItem = m_TreeCtrl.InsertItem( "Parent1 ",hRoot);
//只给如下两个子节点添加图标
hSubItem = m_TreeCtrl.InsertItem("child1",0,1,hItem);
hSubItem1 = m_TreeCtrl.InsertItem("child2",0,1,hItem,hSubItem);hItem1 = m_TreeCtrl.InsertItem( "Parent2 ",hRoot,hItem);
hItem2 = m_TreeCtrl.InsertItem( "Parent3 ",hRoot,hItem1);结果:
在所有的节点前都有图标(是我放入imageList里的第一张图片),这是为什么呢???
另外:
有没有什么方法可以在插入子节点的时候不是一个字符串 eg  "child1"
而是一个其他的控件 例如子节点是个Radio Button的控件 ??请大家指教~! 谢谢~!

解决方案 »

  1.   

    好像不能把CTreeCtrl的风格设置为Radio Button,但是可以设置成Check Button(TVS_CHECKBOXES )
      

  2.   

    没功夫研究,但是要不出错的话插入根节点的时候最好用这个参数TVI_ROOT
    你这样改下试试: 
    hRoot = m_TreeCtrl.InsertItem("我的电脑",1,1,TVI_ROOT);
    hItem = m_TreeCtrl.InsertItem("Parent1",1,1,TVI_ROOT,hRoot);
      

  3.   

    TO leodream:
    我现在的现象就是只给两个子节点加图标,结果其他父节点也都有图标了,但是我并没有在程序上给父节点加图标啊 ,看:
    hRoot = m_TreeCtrl.InsertItem("我的电脑");
    hItem = m_TreeCtrl.InsertItem( "Parent1 ",hRoot);
    //只给如下两个子节点添加图标
    hSubItem = m_TreeCtrl.InsertItem("child1",0,1,hItem);
    hSubItem1 = m_TreeCtrl.InsertItem("child2",0,1,hItem,hSubItem);hItem1 = m_TreeCtrl.InsertItem( "Parent2 ",hRoot,hItem);
    hItem2 = m_TreeCtrl.InsertItem( "Parent3 ",hRoot,hItem1);我想知道这是为什么 ??还有就是怎么能解决这个问题。