大家看看一下这个函数:它的目的是这样的:
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;
}