在VC6.0环境下,用MFC创建了两个CTREECTRL,第一树为一棵三态树,请问怎么把第一颗树中的选中(复选)的子节点插入到另一棵书中,同时保持节点在第一棵的结构(父子关系不变)。

解决方案 »

  1.   

    没看明白。
    比如你的第一棵是这样的
    father
       ---1
       ---2
       ---3你选择了那3个子节点,送到右边去,没带father过去,怎么样算是你说的“结构不变”?
      

  2.   

    第一树有四层结构,我选中第二层的节点,那么第二层节点中选择的部分,过去,带着父节点。
    father---
            |--1
               |---11
               |---12  
            |--2
            |--3
    假如我选中1和2,那么右边树显示的是
    father---
            |--1
               |---11
               |---12
            |--2
    这样明白了吧。
      

  3.   

    属性 GetCount 获取与一个treeview控件相关联的tree项的数目 
    GetIndent 获取一个tree view项对它的父项的偏移(以像素表示) 
    SetIndent 设置一个tree view项对它的父项的偏移(以像素表示) 
    GetImageList 获取与一个tree view控件相关联的图像列表的句柄 
    SetImageList 设置与一个tree view控件相关联的图像列表的句柄 
    GetNextItem 获取与指定的关系匹配的下一个tree view项 
    ItemHasChildren 如果指定项有子项则返回非零值 
    GetChildItem 获取一个指定tree view项的子项 
    GetNextSiblingItem 获取指定tree view项的下一个兄弟项 
    GetPrevSiblingItem 获取指定tree view项的前一个兄弟项 
    GetParentItem 获取指定tree view项的父项 
    GetFirstVisibleItem 获取指定tree view项的第一个可视项 
    GetNextVisibleItem 获取指定tree view项的下一个可视项 
    GetPrevVisibleItem 获取指定tree view项的前一个可视项 
    GetSelectedItem 获取当前被选择的tree view项 
    GetDropHilightItem 获取一次拖放操作的目标 
    GetRootItem 获取指定tree view项的根 
    GetItem 获取一个指定tree view项的属性 
    SetItem 设置一个指定tree view项的属性 
    GetItemState 返回一个项的状态 
    SetItemState 设置一个项的状态 
    GetItemImage 获取与一个项相关联的图像 
    SetItemImage 设置与一个项相关联的图像 
    GetItemText 返回一个项的文本 
    SetItemText 设置一个项的文本 
    GetItemData 返回与一个项关联的32位的应用程序指定值 
    SetItemData 设置与一个项关联的32位的应用程序指定值 
    GetItemRect 获取一个tree view项的边界矩形 
    GetEditControl 获取用来编辑指定tree view项的编辑控件的句柄 
    GetVisibleCount 获取与一个tree view项关联的可视tree项的编号 
    GetToolTips 获取一个tree view控件使用的子ToolTip控件的的句柄 
    SetToolTips 设置一个tree view控件的子ToolTip控件的的句柄 
    GetBkColor 获取控件的当前背景颜色 
    SetBkColor 设置控件的背景颜色 
    GetItemHeight 获取tree view项的当前高度 
    SetItemHeight 设置tree view项的当前高度 
    GetTextColor 获取控件的当前文本颜色 
    SetTextColor 设置控件的文本颜色 
    SetInsertMark 设置一个tree view控件的插入标记 
    GetCheck 获取一个tree控件项的核选状态 
    SetCheck 设置一个tree控件项的核选状态 
    GetInsertMarkColor 获取tree view用来绘制插入标记的颜色 
    SetInsertMarkColor 设置tree view用来绘制插入标记的颜色 操作 InsertItem 在一个tree view控件中插入一个新项。 
    DeleteItem 从一个tree view控件中删除一个项 
    DeleteAllItems 从一个tree view控件中删除所有的项 
    Expand 展开或收缩指定tree view项的子项 
    Select 选择,在视中滚动,或重画一个指定的tree view项 
    SelectItem 选择一个指定的tree view项 
    SelectDropTarget 重画作为一次拖放操作的目标的tree项 
    SelectSetFirstVisible 选择一个指定的tree view项作为第一个可视项 
    EditLabel 现场编辑一个指定的tree view项 
    HitTest 返回与CtreeCtrl关联的光标的当前位置 
    CreateDragImage 为指定的tree view项创建一个拖动位图 
    SortChildren 排序一个给定父项的子项 
    EnsureVisible 确保一个tree view项在它的tree view控件中是可视的 
    SortChildrenCB 使用一个由应用程序定义的排序函数来排列一个给定父项的子项
    自己去拼凑下吧,函数的用法不会去网上搜,还有疑难就在这里问好了。我用法都给你列出来了
      

  4.   

    INSERTITEM时直接在给形参hParent赋值,是不是就在其节点下。还有树2中的关系怎样根据树1生成。
      

  5.   

    做过,比较变态,插入的话深度过大会比较难做,两三层没问题,又不好用递归实现,因为InsertItem要从父Item插入,都要自己推逻辑
    哎~悲剧~
      

  6.   

    不用递归怎么判断哪些节点被选中呢?我用递归判断出选出的节点,但是在建树的时候难点就来了。楼上的能提供点思想吗?代码大的话可以发我邮箱
    [email protected]