我做了一个树控件,在父项右键弹出菜单添加子项,在子项右键菜单删除选中子项。
子项命名规则为:
第一个子项:conductor1
第二个子项:conductor2
第三个子项:conductor3
第四个子项:conductor4
..............
实现方式是:
定义一个成员变量m_numofconductor,记录当前添加的是第几项,初始化为0
用以下代码实现添加:
        CString conductor="conductor";
        char numofconductor[2];
m_numofconductor+=1;
itoa(m_numofconductor,numofconductor,10);
conductor+=numofconductor;     
InsertItem(_T(conductor), GetSelectedItem());
这样就能按上述命名规则添加。现在我要删除,规则为:
删除一项后,后面第一项名称取代删除项,依此类推。就是我删除conductor2后,原来conductor3变成conductor2,原来conductor4变成conductor3
使得数列表看上去仍然是:
conductor1
conductor2
conductor3
而不是:
conductor1
conductor3
conductor4。
我应该怎么做呢?
谢谢!
MSDN我也看过,但不知怎么解决,希望能有具体解决方案!

解决方案 »

  1.   

    多谢各位!
    循环用GetNextSiblingItem吗
      

  2.   

    用GetNextSiblingItem,先改名,后删除
      

  3.   

    我在树项右键菜单删除命令响应函数里加入代码:
    HTREEITEM hnextItem=GetNextSiblingItem(m_hItem);//m_hItem是当前要删除树项Handle
    if (hnextItem!=NULL)
    {
       do 
       {
       SetItemText(hnextItem,"test");
       hnextItem=GetNextSiblingItem(hnextItem);
       } while (hnextItem==NULL);
    }
    DeleteItem(m_hItem);
    程序运行中会卡死。
    如果把DeleteItem(m_hItem)提到最前面:
    DeleteItem(m_hItem);
    HTREEITEM hnextItem=GetNextSiblingItem(m_hItem);//m_hItem是当前树项Handle
    if (hnextItem!=NULL)
    {
       do 
       {
       SetItemText(hnextItem,"test");
       hnextItem=GetNextSiblingItem(hnextItem);
       } while (hnextItem==NULL);
    }
    可以运行,但是名字没改过来。
      

  4.   

    while (hnextItem!=NULL);
      

  5.   

    晕,这么大意!多谢cnzdgs,真是好人啊,看这么仔细,结贴了。
      

  6.   

    晕,这么大意!多谢cnzdgs,真是好人啊,看这么仔细,结贴了。