treeview节点选择和未选择图标可以设置,但是当扩展后怎么改变图标,msdn我看了好半天也没弄明白,那位朋友可以帮帮我。还有ImageList_SetOverlayImage 是干什么用的,我弄不明白。

解决方案 »

  1.   

    ImageList_SetOverlayImage 好象是加载图标的变量。
    treeview在添加项目时就设置二个图标,前一个图标为常用图标,后一个为打开图标。
    m_TreeCtrl->InsertItem( "treeview", 0, 0 )
      

  2.   

    TV_INSERTSTRUCT InsertStruct;
    InsertStruct.item.mask = TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE; //将当前Mcu插入到拓扑图树中
    InsertStruct.hParent = hParent;
    InsertStruct.item.iImage = 0; // 常用图标
    InsertStruct.item.iSelectedImage = 1; // 打开的图标
    InsertStruct.item.pszText = "dd";
    m_pTree->InsertItem(&InsertStruct);
      

  3.   

    item.iSelectedImage 是选中时的图标,不是展开时的图标。展开时的图标怎么设置?
      

  4.   

    可在初始化对话框中写入以下代码:
    HTREEITEM hRoot;
    TV_INSERTSTRUCT TCItem;
    TCItem.hParent = TVI_ROOTT;
    CItem.hInsertAfter = TVI_LAST;
    TCItem.item.mask = TVIF_TEXT|TVIF_PARAM|TVIF_IMAGE|TVIF_SELECTEDIMAGE
    TCItem.item.pszText = "显示的内容";
    TCItem.item.lParam = 0; //序号
    TCItem.item.iImage = 0; //常用图标
    TCItem.item.iSelectedImage = 1;//被选种的图标
    hRoot = m_TreeCtrl.InsertItem(&TCItem);//返回根项句柄
      

  5.   

    HTREEITEM InsertItem(
       UINT nMask,
       LPCTSTR lpszItem,
       int nImage,
       int nSelectedImage,//这个,展开后的图标
       UINT nState,
       UINT nStateMask,
       LPARAM lParam,
       HTREEITEM hParent,
       HTREEITEM hInsertAfter 
    );
      

  6.   

    上面回答得都不对呀!怎么都往iSelectedImage上说呀,但iSelectedImage只是选中时的图标呀!
      

  7.   

    只能自己重新设置展开的图标了,重新设置节点的iImage索引
    TVITEM tvItem = {0};
    tvItem.mask = TVIF_IMAGE;
    tvItem.hItem = hItem;CTreeCtrl.GetItem(&tvItem);
    tvItem.iImage = 2; // 展开的图标
    CTreeCtrl.SetItem(&tvItem);
      

  8.   

    由CTreeView扩展自己的CTreeViewEx
    再响应TVN_ITEMEXPANDED消息void CTreeViewEx::OnTvnItemExpanded(NMHDR *pNMHDR, LRESULT *pResult)
    {
        LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR);
        // TODO: 在此添加控件通知处理程序代码
        CTreeCtrl &oTreeCtrl = GetTreeCtrl();
        HTREEITEM hItem = pNMTreeView->itemNew.hItem;    // 如果是展开操作……
        // 改变图表为展开的样式
        if( 2 == pNMTreeView->action )
        {
            oTreeCtrl.SetItemImage(nYourExpendedImageId1, nYourExpendedImageId2);
        }
        else  // 否则不是展开,还原图标
        {
            oTreeCtrl.SetItemImage(nYourFormerImageId1, nYourFormerImageId2);
            
        }    *pResult = 0;
    }细节问题自己解决
      

  9.   

    就是楼上这么的,展开的图标由消息TVN_ITEMEXPANDED控制,自己去决定它的。