如何把一个treectrl的内容快速复制到另一个treectrl中

NeedHelpHelpMe 2004-11-29 10:24:22
请注意"快速".
谢谢
...全文
86 点赞 收藏 4
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
把原来的节点删除掉,然后一个个按第一个树的节点添加到第二个上! OK!
回复
danyueer 2004-11-29
用序列化,把一个CTreeCtrl的数据输出到另一个CTreeCtrl当中。
回复
NeedHelpHelpMe 2004-11-29
非常感谢, 我试一下, 没问题就马上给分
回复
handwolf 2004-11-29
楼主,我为你写了一个递归的函数,不知道能不能满足你的要求!
调用方法:
CTreeCtrl m_tree2;
CTreeCtrl m_tree1;
。。。。。。
CopyData_tree2tree(&m_tree1, &m_tree2);

源代码:
//////////////////////////////////////////////////////CopyData_tree2tree
//功能--树和树之间的数据拷贝!
//treeFrom--源树指针
//treeTo--目的树指针
//itemFrom--源树子项目
//itemTo--目的树子项目
//return--正确返回true,否则返回false;
//author--handwolf
//create time--2004.11.29
//////////////////////////////////////////////////////
bool CopyData_tree2tree(CTreeCtrl* treeFrom,CTreeCtrl* treeTo,HTREEITEM itemFrom=TVI_ROOT,HTREEITEM itemTo=TVI_ROOT)
{
if(treeFrom == NULL || treeTo == NULL)
return false;

if(itemTo == TVI_ROOT){
treeTo->DeleteAllItems();
}

HTREEITEM treeFromItem;
if(itemFrom == TVI_ROOT){
treeFromItem = treeFrom->GetRootItem();
}else{
treeFromItem = treeFrom->GetChildItem(itemFrom);
}

while(treeFromItem){
CString strText = treeFrom->GetItemText(treeFromItem);
WORD data = treeFrom->GetItemData(treeFromItem);
//如果还要拷贝其他数据,在这里加!
HTREEITEM itemToTmp = treeTo->InsertItem(strText,0,0,itemTo);
treeTo->SetItemData(itemToTmp,data);

HTREEITEM itemFromTmp = treeFrom->GetChildItem(treeFromItem);
if(itemFromTmp){
CopyData_tree2tree(treeFrom,treeTo,treeFromItem,itemToTmp);
}

treeFromItem = treeFrom->GetNextItem(treeFromItem,TVGN_NEXT);
}

return true;
}
回复
相关推荐
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2004-11-29 10:24
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……