//item:根节点
HTREEITEM CTableListDlg::FindItem(HTREEITEM item)
{
HTREEITEM hfind;
//空树,直接返回NULL
if(item == NULL)
return NULL;
//遍历查找
while(item!=NULL)
{
//当前节点即所需查找节点
if(m_treeDir.GetItemState(item, TVIS_SELECTED) & TVIS_SELECTED)
{
HTREEITEM hItem = item;
HTREEITEM hRoot = m_treeDir.GetRootItem();
CString FullPath = m_treeDir.GetItemText(hItem);
while (hItem != hRoot)
{
hItem = m_treeDir.GetParentItem(hItem);
CString temp = m_treeDir.GetItemText(hItem);
if (temp == L"计算机")
{
break;
}
FullPath = temp + L"\\" + FullPath;
}
// 可以把所有的路径放到容器中,以便后期对文件操作
AfxMessageBox(FullPath);
//return item;
}
//查找当前节点的子节点
if(m_treeDir.ItemHasChildren(item))
{
item = m_treeDir.GetChildItem(item);
//递归调用查找子节点下节点
hfind = FindItem(item);
if(hfind)
{
return hfind;
}
else
{
//子节点中未发现所需节点,继续查找兄弟节点
item = m_treeDir.GetNextSiblingItem(m_treeDir.GetParentItem(item));
}
}
else
{
//若无子节点,继续查找兄弟节点
item = m_treeDir.GetNextSiblingItem(item);
}
}
return item;
}
MFC遍历树控件中选中的节点,前提是多选
最新推荐文章于 2022-05-24 21:50:32 发布