怎样删除CtreeCtrl控件的指定结点和这个结点下的所有结点?
原因是这样的,我要更新这个控件的所有结点信息.之前的结点有几个数据要更新,我要把之前的全部删除,然后导入新的数据并加入相应的结点.所有要删除一个结点级下面所有的结点.请问怎么删除?
原因是这样的,我要更新这个控件的所有结点信息.之前的结点有几个数据要更新,我要把之前的全部删除,然后导入新的数据并加入相应的结点.所有要删除一个结点级下面所有的结点.请问怎么删除?
解决方案 »
- vc2008如何把控件与数据库字段关联
- MFC里CTreeCtrl控件里怎么样通过代码使某个节点处于选中状态
- ::std::string 转 CString 的问题,急.
- 同样的设置、代码,有的机器能下载,有的机器不能下载,有什么原因?
- using namespace ... 是什么意思
- 请问用ATL 中 BSTR数据类型和CString 类型怎么相互转换?什么命令?
- 关于《COM技术内幕》第8章 的聚合问题,高手指教。
- listctrl的虚表响应消息LVN_GETDISPINFO问题(分实在太少,还请各位帮帮忙)
- ReleaseDC和DeleteDC有什么区别?
- 江湖急救,怎样让CListView视图在改变列宽时能刷新?
- virtual studio中用Windows Media Player控件
- VC控制台应用程序调用MFC的DLL--滴问题
CTreeCtrl* pCtrl = (CTreeCtrl*) GetDlgItem(IDC_TREE1);
ASSERT(pCtrl != NULL);// Look at all of the root-level items
HTREEITEM hCurrent = pCtrl->GetNextItem(TVI_ROOT, TVGN_NEXT);
while (hCurrent != NULL)
{
// Get the text for the item. Notice we use TVIF_TEXT because
// we want to retrieve only the text, but also specify TVIF_HANDLE
// because we're getting the item by its handle.
TVITEM item;
TCHAR szText[1024];
item.hItem = hCurrent;
item.mask = TVIF_TEXT | TVIF_HANDLE;
item.pszText = szText;
item.cchTextMax = 1024; BOOL bWorked = pCtrl->GetItem(&item); // Try to get the next item
hCurrent = pCtrl->GetNextItem(hCurrent, TVGN_NEXT); // If we successfuly retrieved an item, and the item's text
// contains a lowercase letter 'e', delete the item.
if (bWorked && _tcschr(item.pszText, 'e'))
pCtrl->DeleteItem(item.hItem);
}
{
HTREEITEM hPare=NULL;
if(m_tree.ItemHasChildren(hItem))
{
if(m_iCount>=0)
m_iCount--;
hPare=m_tree.GetParentItem(hItem);
TRACE("Delete :%s\n",m_tree.GetItemText(hItem));
m_tree.DeleteItem(hItem);
return (m_iCount>=0)?DelChild(hPare):NULL; }
else
{
++m_iCount;
TRACE("node :%s\n",m_tree.GetItemText(hItem));
return DelChild(m_tree.GetNextItem(hItem,TVGN_CHILD));
}
}
{
if(TreeItem == NULL)
return;
while(TreeItem!=NULL)
{
if(m_Tree.ItemHasChildren(TreeItem))
{
m_Tree.Expand(TreeItem,TVE_EXPAND);
HTREEITEM hChild = m_Tree.GetChildItem(TreeItem);
diguiExpand(hChild);
diguiExpand(m_Tree.GetNextSiblingItem(hChild));
}
TreeItem=m_Tree.GetNextSiblingItem(TreeItem);
}
}这个是递归展开所有节点的算法,自己改一下,递归删除所有节点是一个道理。希望对你有帮助