先调用ItemHasChildren()
如果返回FALSE则执行操作,为TRUE则调用以下函数,可将树合上:
其中m_this为当前树的对像:void CGetClassView::OnExpend(HTREEITEM hTreeItem) 
{
while(hTreeItem)
{
if(m_this.ItemHasChildren(hTreeItem))
{
m_this.Expand(hTreeItem, TVE_EXPAND);
hTreeItem = m_this.GetNextItem(hTreeItem, TVGN_CHILD);
OnExpend(hTreeItem);
}
else
{
hTreeItem = m_this.GetNextSiblingItem(hTreeItem);
}
}
}

解决方案 »

  1.   

    先调用ItemHasChildren,若返回FALSE则执行操作,若返回TRUE则用下列函数:
    其中 m_this为CTreeCtrl的一个对象:
    以下将树展开.
    void CGetClassView::OnExpend(HTREEITEM hTreeItem) 
    {
    while(hTreeItem)
    {
    if(m_this.ItemHasChildren(hTreeItem))
    {
    m_this.Expand(hTreeItem, TVE_EXPAND);
    hTreeItem = m_this.GetNextItem(hTreeItem, TVGN_CHILD);
    OnExpend(hTreeItem);
    }
    else
    {
    hTreeItem = m_this.GetNextSiblingItem(hTreeItem);
    }
    }
    }
      

  2.   

    也可以用GetChildItem(HTREEITEM hti)hti是单击的那个结点
    如果返回值不为空,则调用Expand()展开,否则响应事件