CTreeCtrl遍歷樹上所有可見和不可見的節點

.h中

HTREEITEM get_next_item(HTREEITEM this_item);	// 遍歷該節點後所有節點,包括未expand的

.cpp中

HTREEITEM CMyTreeCtrl::get_next_item( HTREEITEM this_item )
{
	if(m_pTreeCtrl->GetChildItem(this_item))
	{
		return m_pTreeCtrl->GetChildItem(this_item);
	}
	if(m_pTreeCtrl->GetNextSiblingItem(this_item))
	{
		return m_pTreeCtrl->GetNextSiblingItem(this_item);
	}
	if (m_pTreeCtrl->GetParentItem(this_item))
	{
		if (m_pTreeCtrl->GetNextSiblingItem(m_pTreeCtrl->GetParentItem(this_item)))
		{
			return m_pTreeCtrl->GetNextSiblingItem(m_pTreeCtrl->GetParentItem(this_item));
		}else
		{
			HTREEITEM nitem = m_pTreeCtrl->GetParentItem(this_item);
			while (nitem && !(m_pTreeCtrl->GetNextSiblingItem(nitem)))
			{
				nitem = m_pTreeCtrl->GetParentItem(nitem);
			}
			return m_pTreeCtrl->GetNextSiblingItem(nitem);
		}
	}
	return NULL;
}

首先從GetRootItem()開始就可以向下一個一個遍歷了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章