如何遍历树型控件里的所有节点?
我的控件联系了一个变量m_treeCtrl, 并且这个树只有一个父节点, 剩下的都是这个树的子节点.
例:
父节点: 初三(1)班
子节点: 学生A
子节点: 学生B
子节点: 学生C
子节点: 学生D
子节点: 学生E
子节点: 学生F
子节点: 学生G
子节点: 学生H(比较简单~)

解决方案 »

  1.   

    http://blog.csdn.net/smallfishff/archive/2007/10/12/1821815.aspx这个因该能满足你的要求.
      

  2.   


    void xxx::Expand(HTREEITEM hItem)//参数为要遍历的结点
    {
    while(hItem)
    {
    HTREEITEM hChildItem = m_tree.GetChildItem(hItem);
    m_tree.Expand(hItem,TVE_EXPAND);//这是展开,可以换成你的代码
    Expand(hChildItem);
    hItem = m_tree.GetNextSiblingItem(hItem);
    }
    }
      

  3.   


    HTREEITEM hItem = m_treeCtrl.GetRootItem();        HTREEITEM hChildItem = m_treeCtrl.GetChildItem(hItem);
    while (hChildItem != NULL)
    {
    CString strTreeName = m_treeCtrl.GetItemText(hChildItem );
    hChildItem = m_treeCtrl.GetNextItem(hChildItem , TVGN_NEXT);
    }
      

  4.   

    给个类子,是判断鼠标点中那个结点方法是一样的一层一层的移动指针:
    判断左键选择那一层:HTREEITEM PreCheckIndex =NULL;
    //消息函数
    void CPaperCreateDlg::OnTreeViewCheck()
    { CString strCheck=_T("");
    HTREEITEM CheckIndex;
    HTREEITEM ParentIndex;
     
    CheckIndex = m_ctrlModelTree.GetSelectedItem();
    ParentIndex = m_ctrlModelTree.GetParentItem(CheckIndex);
    //点击空白处
    if (PreCheckIndex == CheckIndex)
    {
    return;
    }
    PreCheckIndex = CheckIndex;
    if (ParentIndex==NULL)//点击的是根节点
    {
    return;
    }
    //根结点的父结点
    ParentIndex = m_ctrlModelTree.GetParentItem(ParentIndex);
    if (ParentIndex==NULL)//点击的是第二层节点
    {
    return;
    }
    //选中子结点
    strEquipType = m_ctrlModelTree.GetItemText(ParentIndex);
    //AfxMessageBox(strEquipType);
    //得到叶子结点值(名称)
    strCheck = m_ctrlModelTree.GetItemText(CheckIndex);//第三层子结点的值(模块型号)
    }
    分数太少!