1、遍历下一个节点
HTREEITEM getNextItem(CTreeCtrl* pTreeCtrl, HTREEITEM hSelItem)
{
if (pTreeCtrl->GetChildItem(hSelItem))
return pTreeCtrl->GetChildItem(hSelItem);
else if (pTreeCtrl->GetNextSiblingItem(hSelItem))
return pTreeCtrl->GetNextSiblingItem(hSelItem);
else if (pTreeCtrl->GetParentItem(hSelItem))
{
if (pTreeCtrl->GetNextSiblingItem(pTreeCtrl->GetParentItem(hSelItem)))
return pTreeCtrl->GetNextSiblingItem(pTreeCtrl->GetParentItem(hSelItem));
else
{
HTREEITEM hItem = pTreeCtrl->GetParentItem(hSelItem);
while (hItem && !(pTreeCtrl->GetNextSiblingItem(hItem)))
{
hItem = pTreeCtrl->GetParentItem(hItem);
}
return pTreeCtrl->GetNextSiblingItem(hItem);
}
}
return NULL;
}
2、计算子节点个数
int getChildItemCount(CTreeCtrl* pTreeCtrl, HTREEITEM hItem)
{
int nRef = 0;
HTREEITEM hNext = pTreeCtrl->GetChildItem(hItem);
while (hNext)
{
nRef++;
hNext = pTreeCtrl->GetNextSiblingItem(hNext);
}
return nRef;
}