大家看看一下这个函数:它的目的是这样的:
m_arr是一个cstringarray字符传数组变量.他已经保存了分解的下列字符串:
c:\kknd\mao\aso\
c:\kknd\qu\cdj\
c:\music\qqa\
c:\music\rand\
.........
等等.而下面的函数的功能是:如果树型控件不存在子目录树.则建立目录树,如果目录树存在,则跳过....
上面的字符窜中,因该这样:建立一个树,因为前两条都有kknd,则应该只建立一个kknd,不能重复.
因该这样
c:____kknd______mao..
| |_________qu...
|____music......但是:现在的情形是他建立了这样:
c:_____kknd_____mao...
| |______qu...
|______music...
|______music....
我发现,所有的字符窜只和目录树的第一层比较,所以第一层是正确的,您看凡是kknd目录下的都正确.但是music及其以下就没那么好运了.也就是他根本没有检查目录的下一层.
这个问题困扰了我很久.我真的希望各位朋友.能详细的给出代码问题所在.而不是简单说出思路.同时我也问一下.
谁能给出详尽的代码?他能把
c:\kknd\map3\kkknd\
.......
分解后建成目录树.而没有任何问题.
HTREEITEM COutlookTreeView::_addtree(HTREEITEM tree_)
{
HTREEITEM _next=tree_; if(!m_TreeCtrl.ItemHasChildren(_next))
{ if(_num<m_arr.GetSize())
{
_next=m_TreeCtrl.InsertItem(m_arr.GetAt(_num),_next,NULL);
_num+=1;
if(_num<m_arr.GetSize())
{
_addtree(_next);
}
}
}while(m_TreeCtrl.ItemHasChildren(_next))
{
_next=m_TreeCtrl.GetChildItem(_next);
while(m_TreeCtrl.GetItemText(_next)!="")
{
if(_num<m_arr.GetSize()-1)
{
if(m_TreeCtrl.GetItemText(_next)==m_arr.GetAt(_num))
{
_num=_num+1;
_addtree(_next);
}
else
{
_next=m_TreeCtrl.InsertItem(m_arr.GetAt(_num),tree_,NULL);
if(_num<m_arr.GetSize()-1) AfxMessageBox(m_TreeCtrl.GetItemText(_next));
{
_num+=1;
_addtree(_next);
break;
}
}
}
break;
}}
return _next;
}
m_arr是一个cstringarray字符传数组变量.他已经保存了分解的下列字符串:
c:\kknd\mao\aso\
c:\kknd\qu\cdj\
c:\music\qqa\
c:\music\rand\
.........
等等.而下面的函数的功能是:如果树型控件不存在子目录树.则建立目录树,如果目录树存在,则跳过....
上面的字符窜中,因该这样:建立一个树,因为前两条都有kknd,则应该只建立一个kknd,不能重复.
因该这样
c:____kknd______mao..
| |_________qu...
|____music......但是:现在的情形是他建立了这样:
c:_____kknd_____mao...
| |______qu...
|______music...
|______music....
我发现,所有的字符窜只和目录树的第一层比较,所以第一层是正确的,您看凡是kknd目录下的都正确.但是music及其以下就没那么好运了.也就是他根本没有检查目录的下一层.
这个问题困扰了我很久.我真的希望各位朋友.能详细的给出代码问题所在.而不是简单说出思路.同时我也问一下.
谁能给出详尽的代码?他能把
c:\kknd\map3\kkknd\
.......
分解后建成目录树.而没有任何问题.
HTREEITEM COutlookTreeView::_addtree(HTREEITEM tree_)
{
HTREEITEM _next=tree_; if(!m_TreeCtrl.ItemHasChildren(_next))
{ if(_num<m_arr.GetSize())
{
_next=m_TreeCtrl.InsertItem(m_arr.GetAt(_num),_next,NULL);
_num+=1;
if(_num<m_arr.GetSize())
{
_addtree(_next);
}
}
}while(m_TreeCtrl.ItemHasChildren(_next))
{
_next=m_TreeCtrl.GetChildItem(_next);
while(m_TreeCtrl.GetItemText(_next)!="")
{
if(_num<m_arr.GetSize()-1)
{
if(m_TreeCtrl.GetItemText(_next)==m_arr.GetAt(_num))
{
_num=_num+1;
_addtree(_next);
}
else
{
_next=m_TreeCtrl.InsertItem(m_arr.GetAt(_num),tree_,NULL);
if(_num<m_arr.GetSize()-1) AfxMessageBox(m_TreeCtrl.GetItemText(_next));
{
_num+=1;
_addtree(_next);
break;
}
}
}
break;
}}
return _next;
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货