正如标题所说的,请问各位该怎么解决呢?
SetCheck()?
GetCheck()?

解决方案 »

  1.   

    BOOL GetCheck(HTREEITEM hItem) const;
    BOOL SetCheck(HTREEITEM hItem, BOOL fCheck = TRUE);枚举你所选的节点的子节点,用SetCheck设置选中状态
      

  2.   

    自己定义一个继承CTreeCtrl的类,如CMyTree
    重载OnLButtonDown函数
    void CMyTree::OnLButtonDown(UINT nFlags, CPoint point) 
    {
    UINT uFlags;
    HTREEITEM itemnode = HitTest(point, &uFlags);
    if (GetStyle() & TVS_CHECKBOXES)
    {
    if ((itemnode != NULL) && (uFlags & TVHT_ONITEMSTATEICON))
    {
    BOOL checked = !GetCheck(itemnode);
    HTREEITEM childnode1, childnode2;
    childnode1 = GetChildItem(itemnode);
    while (childnode1)
    {
    childnode2 = GetChildItem(childnode1);
    if (childnode2)
    {
    childnode1 = childnode2;
    continue;
    }
    else
    {
    SetCheck(childnode1, checked);
    childnode2 = GetNextItem(childnode1, TVGN_NEXT);
    if (!childnode2)
    {
    childnode1 = GetParentItem(childnode1);
    if (childnode1 != itemnode)
    SetCheck(childnode1, checked);
    childnode1 = GetNextItem(childnode1, TVGN_NEXT);
    }
    else
    childnode1 = childnode2;
    }
    }
    }
    } CTreeCtrl::OnLButtonDown(nFlags, point);
    }
      

  3.   

    wtfelse你的方法可以实现的
    但出现个问题,就是现在有一个节点A,下面有A1、A2;A1下有A11、A12,A2下有A21、A22;当我选中A1时,A2也被选中了的
    帮忙解决下结帖,谢谢
      

  4.   

    我试过在A1,A2没有子节点情况下,选择A1,A2是不会选中的。
    有子节点情况我没有试。
    你可以用GetNextSiblingItem判断一下是不是同一层节点
      

  5.   

    意思是说重写的LBUTTON函数只能在有两层目录下是有效的?三曾四曾的话就不能用,要再经过判断是吧?
    呵呵,我对这个刚开始看,什么都不懂,才做界面的,请你多指教啊