想移动或复制CTreeCtrl中的某个叶节点到CTreeCtrl的其他位置,
包括叶结点的子节点以及孙节点。
不知道该怎么做,
有没有简单的方法?

解决方案 »

  1.   

    你试试看//节点数
    int iCount = 0; // 根节点
    HTREEITEM hRoot = m_YourTree.GetRootItem(); //调用函数得到结果
    iCount = GetExpItemCount(hRoot, iCount);//GetExpItemCount( )函数体。
    //作用:遍历数得到展开的节点数;
    //参数说明:HTREEITEM hRoot:根节点 , int iCount:累计节点数
    int GetExpItemCount(HTREEITEM hItem, int iCount)
    {
        BYTE      bItemState = 0;
        HTREEITEM hChild;    if(hItem != NULL)
        {
    iCount++;
    bItemState = m_Tree.GetItemState(hItem, TVIS_EXPANDED);
    hChild     = m_Tree.GetChildItem(hItem);
    if((bItemState & TVIS_EXPANDED) == TVIS_EXPANDED
                 && hChild != NULL)
    {
                  iCount = GetExpItemCount(hChild, iCount);
    } hItem = m_Tree.GetNextSiblingItem(hItem);
    if(hItem != NULL)
             {
         iCount = GetExpItemCount(hItem, iCount);
    }
        }
        return iCount;
    }
      

  2.   

    总算解决了。
    void MoveItem(CTreeCtrl& myTree,HTREEITEM hFromItem,HTREEITEM hToItem)
    {
    HTREEITEM hChild,hItem;
    if(hFromItem != NULL)
    {
    hChild = myTree.GetChildItem(hFromItem);
    while(hChild != NULL)
    {
    hItem = myTree.InsertItem(myTree.GetItemText(hChild),hToItem);
    MoveItem(myTree,hChild,hItem);
    hChild = myTree.GetNextSiblingItem(hChild);
    }
    }
    }