树控件类有GetNextSiblingItem函数,但是没有GetFirstSiblingItem函数。
我想遍历当前项(Item)同一级的所有项目,怎么办?

解决方案 »

  1.   

    if (pmyTreeCtrl->ItemHasChildren(hmyItem))
    {
       HTREEITEM hItem = pmyTreeCtrl->GetChildItem(hmyItem);   while (hItem != NULL)
       {
          pmyTreeCtrl->SetItemState(hItem, TVIS_BOLD, TVIS_BOLD);
          hItem = pmyTreeCtrl->GetNextSiblingItem(hItem);
       }
    }
    上面的例子說明,GetChildItem()就是你要找的所謂的“GetFirstSiblingItem”
      

  2.   

    syh_17(神探柯南):
    有没有搞错?我想找同一级的所有项目,你给我找下一级的所有项目。
    如果先返回上一级,再用你的方法还差不多,但是如果当前项目没有上一级怎么办呢?
      

  3.   

    不是啊,GetNextSiblingItem就是找同一级的节点啊。
    你可以GetSelectedItem后得到当前节点再GetNextSiblingItem就是找同一级的节点.没有上一级判断为null.
      

  4.   

    HTREEITEM GetFirstSiblingItem( HTREEITEM hItem )
    {
      HTREEITEM hItemPrev;
      while (hItem != NULL)
      {
        hItemPrev = hItem;
        hItem = pmyTreeCtrl->GetPrevSiblingItem(hItem);
      }
      return hItemPrev;
    }
    如果仅是遍历本级的所有Item的话,可以将GetPrevSiblingItem()和GetNextSiblingItem()结合起来用。
      

  5.   

    //结合楼上的函数
    HTREEITEM GetFirstSiblingItem( HTREEITEM hItem )
    {
      HTREEITEM hItemPrev = hItem;  //这里我修改了一下
      while (hItem != NULL)
      {
        hItemPrev = hItem;
        hItem = pmyTreeCtrl->GetPrevSiblingItem(hItem);
      }
      return hItemPrev;
    }
    和GetNextSiblingItem就搞定了。