• 全部
...

CTreeCtrl两个对象拷贝!

wxw_wjf 2010-11-16 06:03:20
实现的功能是,将一棵树的节点全部拷贝到另为一棵树里
请大家赐说说咋么弄!
...全文
给本帖投票
157 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Eleven 2010-11-19
  • 打赏
  • 举报
回复
你可以使用XML来保存一个树的结构信息
xiaoguailong3 2010-11-19
  • 打赏
  • 举报
回复
同枝的下一个节点是GetNextSiblingItem(hItem)这个函数,要是有死循环,说明有地方没取下一个节点
wxw_wjf 2010-11-19
  • 打赏
  • 举报
回复
我的代码如下:有死循环
void GisEMap::InitEmapTree()
{
m_cTreeCtrl.SetImageList(cTreeCtrl.GetImageList(TVSIL_NORMAL),TVSIL_NORMAL);
int itemCount = (int)cTreeCtrl.GetCount();
CString str= "";
str.Format("%d",itemCount);
GisLog::Write_GisLog("cTreeCtrl count=>"+str);


m_cTreeCtrl.DeleteAllItems();
//cTreeCtrl
CString sText;
TV_INSERTSTRUCT tvStruct;
//start insert root item
HTREEITEM hLocalTreeRootItem ;
HTREEITEM hGlolbalTreeRootItem = cTreeCtrl.GetRootItem();
tvStruct.item.hItem = hGlolbalTreeRootItem;
tvStruct.item.mask = TVIF_TEXT | TVIF_PARAM ;
cTreeCtrl.GetItem(&tvStruct.item);
sText = cTreeCtrl.GetItemText(hGlolbalTreeRootItem);
tvStruct.item.cchTextMax = sText.GetLength();
tvStruct.item.pszText = sText.LockBuffer();
tvStruct.hInsertAfter = TVI_ROOT;
tvStruct.hParent = TVI_ROOT;
hLocalTreeRootItem = m_cTreeCtrl.InsertItem(&tvStruct);
sText.ReleaseBuffer();
//end insert root item

RecursionTree(hGlolbalTreeRootItem);

/*
if(cTreeCtrl.ItemHasChildren(hGlolbalTreeRootItem))
{
HTREEITEM hChildItem = cTreeCtrl.GetChildItem(hGlolbalTreeRootItem);
HTREEITEM hInsertItem;
while(hChildItem!=NULL)
{
tvStruct.item.hItem = hChildItem;
tvStruct.item.mask = TVIF_TEXT |TVIF_PARAM;
cTreeCtrl.GetItem(&tvStruct.item);
sText = cTreeCtrl.GetItemText(hChildItem);
tvStruct.item.cchTextMax = sText.GetLength();
tvStruct.item.pszText = sText.LockBuffer();
tvStruct.hInsertAfter = hInsertItem;
tvStruct.hParent = hLocalTreeRootItem;
hInsertItem = m_cTreeCtrl.InsertItem(&tvStruct);
sText.ReleaseBuffer();


if(cTreeCtrl.ItemHasChildren(hChildItem)){
HTREEITEM hInsertNextItem;
HTREEITEM hNextChildItem = cTreeCtrl.GetChildItem(hChildItem);
while(hNextChildItem != NULL)
{
tvStruct.item.hItem = hNextChildItem;
tvStruct.item.mask = TVIF_TEXT |TVIF_PARAM;
cTreeCtrl.GetItem(&tvStruct.item);
sText = cTreeCtrl.GetItemText(hNextChildItem);
tvStruct.item.cchTextMax = sText.GetLength();
tvStruct.item.pszText = sText.LockBuffer();
tvStruct.hInsertAfter = hInsertNextItem;
tvStruct.hParent = hChildItem;
hInsertNextItem = m_cTreeCtrl.InsertItem(&tvStruct);
sText.ReleaseBuffer();
//hNextChildItem = NULL;
hNextChildItem = cTreeCtrl.GetNextItem(hNextChildItem, TVGN_NEXT);

// CString str = cTreeCtrl.GetItemText(hNextChildItem);
//GisLog::Write_GisLog("hNextChildItem text=>"+str);


}
}
hChildItem = cTreeCtrl.GetNextItem(hChildItem, TVGN_NEXT);

//hInsertItem = m_cTreeCtrl.InsertItem(groupIter->szGroupName,1,1,hLocalTreeRootItem,hInsertItem);
}

}
*/

//展开所有节点
MyExpandTree(m_cTreeCtrl.GetRootItem());

}
qsycn 2010-11-16
  • 打赏
  • 举报
回复
遍历树拷贝
wxw_wjf 2010-11-16
  • 打赏
  • 举报
回复
这个个拷贝构造函数应该要重载的。
如果重载了拷贝构造函数,则赋值运算也得重载。
好麻烦的,有没有现在迭代一棵树,往另一棵树插入节点的。
请赐代码!
cdpcsc 2010-11-16
  • 打赏
  • 举报
回复
弄懂拷贝构造函数就可以了。

16,549

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

试试用AI创作助手写篇文章吧

手机看
关注公众号

关注公众号

客服 返回
顶部