我使用的CTreeCtrl树,当只有一个根项时,不显示,当再加一个项后,两个都出来了,什么原因?

解决方案 »

  1.   

    代码如下,给我分析一下: //清空树
    //
      m_Tree.SetRedraw(FALSE);
    m_Tree.DeleteAllItems();
    m_TreeImage.DeleteImageList( );
    m_Tree.SetRedraw(TRUE); //创建图象标签
    //
    m_TreeImage.Create(32, 32, ILC_MASK | ILC_COLOR, 2, 1);
    m_Tree.SetTextColor (RGB(7,5,255)); m_TreeImage.Add(AfxGetApp()->LoadIcon(IDI_TREE_OFF));
    m_TreeImage.Add(AfxGetApp()->LoadIcon(IDI_TREE_ON));
    m_Tree.SetImageList( &m_TreeImage,TVSIL_NORMAL );
    DWORD dwStyles=GetWindowLong(m_Tree.m_hWnd, GWL_STYLE);
    dwStyles |= TVS_HASLINES;
    SetWindowLong(m_Tree.m_hWnd, GWL_STYLE, dwStyles); //Tree控件操作变量
    //
    TVINSERTSTRUCT tvInsert;
    HTREEITEM hParent;
    tvInsert.hParent = TVI_ROOT;
    tvInsert.hInsertAfter = TVI_SORT;
    tvInsert.item.mask = TVIF_TEXT|TVIF_PARAM|TVIF_IMAGE|TVIF_SELECTEDIMAGE;
    tvInsert.item.pszText = _T("一个根项");
    tvInsert.item.lParam = 800;
    tvInsert.item.iImage = 0;
    tvInsert.item.iSelectedImage  = 1; //添加一个根项
    //
    m_Tree.InsertItem(&tvInsert);什么都没有;
            /*
    //添加第二个根项
    //
             tvInsert.item.pszText = _T("二个根项");
    m_Tree.InsertItem(&tvInsert);
             */两个都出来了! 但如果先点击第二项时,第二项会消失一次.
      

  2.   

    你添加的是节点吧!
    是不是需要一个ROOT呢
      

  3.   

    去掉SetRedraw(False)和SeRedraw(True);