16,473
社区成员
发帖
与我相关
我的任务
分享
void CXXDlg::TravelChild(HTREEITEM hItem, int& nCount)
{
if(hItem == NULL)
{
return ;
}
if(m_tree.ItemHasChildren(hItem))
{
HTREEITEM hChildItem = m_tree.GetChildItem(hItem);
if(hChildItem)
{
++nCount;
TravelChild(hChildItem, nCount);
}
}
HTREEITEM hNextItem = m_tree.GetNextSiblingItem(hItem);
if(hNextItem)
{
++nCount;
TravelChild(hNextItem, nCount);
}
}
// strText为要查找的字符串,hRetItem为返回该节点的HTREEITEM
void CXXXDlg::TravelChild(HTREEITEM hItem, LPCTSTR strText, HTREEITEM& hRetItem)
{
if(hItem == NULL)
{
hRetItem = NULL;
return ;
}
if(strText == m_tree.GetItemText(hItem))
{
hRetItem = hItem;
return ;
}
if(m_tree.ItemHasChildren(hItem))
{
HTREEITEM hChildItem = m_tree.GetChildItem(hItem);
if(hChildItem)
{
TravelChild(hChildItem, strText, hRetItem);
}
}
HTREEITEM hNextItem = m_tree.GetNextSiblingItem(hItem);
if(hNextItem)
{
TravelChild(hNextItem, strText, hRetItem);
}
}
// 调用,查找该树控件下item的内容为"Root"字符串的节点,并的到该节点下子节点的个数
HTREEITEM hItem = NULL;
TravelChild(m_tree.GetRootItem(), _T("CCC"), hItem);
if(hItem)
{
int nCount = 0;
if(m_tree.ItemHasChildren(hItem))
{
TravelChild(hItem, nCount);
}
CString strText(_T(""));
strText.Format(_T("%d"), nCount);
AfxMessageBox(strText);
}
else
{
AfxMessageBox(_T("Not found"));
}