如何判断树形控件上的某个结点是展开状态还是非展开状态?
代码如何实现,可以通过判断结点属性实现么?

解决方案 »

  1.   

    UINT nItemState = CTreeCtrl::GetItemState(hItem, TVIS_EXPANDED)
    if(nItemState & TVIS_EXPANDED) == TVIS_EXPANDED)
        // 展开了
    else
        // 未被展开
      

  2.   

    UINT   nState   =   m_MenuTreeCtr.GetItemState(hItem,   TVIS_EXPANDED);   
      if(hRootItem==NULL)//是根目录   
      {   
      if   (0   !=   (nState   &   TVIS_EXPANDED))//表示已经展开   
      /////////////////////////////////
      else//   没展开   
      ///////////////////////
      }   
      

  3.   

    还有展开一次的问题.
    void CLeftView::OnItemexpanding(NMHDR* pNMHDR, LRESULT* pResult) 
    {
    NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
    // TODO: Add your control notification handler code here
    CMainFrame   *pMain=(CMainFrame*)AfxGetMainWnd();
    // get LeftTree
    CTreeCtrl&  LeftTree=this->GetTreeCtrl(); TVITEM *pNew=NULL;
    char   tvinamenew[MAX_PATH];
    pNew=&(pNMTreeView->itemNew);
    if(pNew && pNew->hItem)
    {
    UINT ret=LeftTree.GetItemState(pNew->hItem,TVIS_EXPANDEDONCE);
    if(ret & TVIS_EXPANDEDONCE) 
    {
    return;// already
    }
    ......
    }