我做了一个树控件,在父项右键弹出菜单添加子项,在子项右键菜单删除选中子项。
子项命名规则为:
第一个子项: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我也看过,但不知怎么解决,希望能有具体解决方案!
子项命名规则为:
第一个子项: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我也看过,但不知怎么解决,希望能有具体解决方案!
循环用GetNextSiblingItem吗
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);
}
可以运行,但是名字没改过来。