比如说我的H结点下有5个子结点A、B、C、D、E,按顺序排列。请问怎样实现下述功能:选中A时返回1,选中B时返回2,也就是返回位置值。望各位大侠告知一二,谢谢!

解决方案 »

  1.   

    选中节点时,得到节点句柄,然后GetParentItem获得父节点句柄。在用父节点句柄,遍历所有子节点,记录遍历次数,直到找到选中节点,遍历次数即为所需的序号
      

  2.   

    CTreeCtrl* pTree = (CTreeCtrl*)GetDlgItem(IDC_TREE1);
    HTREEITEM hItem,hSelItem,hFirChild;hSelItem = pTree->GetSelectedItem();
    hItem = pTree->GetParentItem(hSelItem);
    hFirChild=pTree->GetNextItem(hItem,TVGN_CHILD);
    while(pTree->GetNextItem(hFirChild,TVGN_NEXT) != 0 && pTree->GetNextItem(hFirChild,TVGN_NEXT) != hSelItem)
    {
     hFirChild = pTree->GetNextItem(hFirChild,TVGN_NEXT);
    index++;
    }
    最后返回index即可.