我有个树控件,假如结点为  A - 1
                            - 2
                            - 3
                          B - 4
                            - 5
                            - 6
                          C - 7
                            - 8叶结点(1到8)可以用鼠标在界面上点开,但是也可能别的程序发消息使之展开。当然别的程序发消息使之展开也就是用树空间的方法展开的。问题来了,当我发消息使之展开的话,(此时树控件状态是 A,C没展开,只有B展开了),然后当我点C结点想展开7,8的时候,发现花屏了,就算我用  CTreeCtrl::Invalidate()也没用。

解决方案 »

  1.   

    我可用的 CTreeCtrl 啊,没自己画什么啊。
      

  2.   

    在正确使用CTreeCtrl 情况下是不会有问题的,你看看是不是程序中对CTreeCtrl哪些控制
      

  3.   

    我没做什么,这是我的代码
    hItem = ptCtrl->GetRootItem() ;
    while (hItem)
    {
    strName = ptCtrl->GetItemText(hItem);
    if(0 == strName.CompareNoCase(lpStrType))
    {
    ptCtrl->SetItemState(hItem,TVIS_EXPANDED,TVIS_EXPANDED);
    hItem = ptCtrl->GetNextItem(hItem,TVGN_CHILD);
    while(hItem)
    {
    strName = ptCtrl->GetItemText(hItem);
    if(0 == strName.Find(lpStrName))
    {
    ptCtrl->SetItemState(hItem,LVIS_SELECTED, LVIS_SELECTED);
    }
    hItem = ptCtrl->GetNextItem(hItem,TVGN_NEXT);
    }
    }
    hItem = ptCtrl->GetNextItem(hItem,TVGN_NEXT);
    }
      

  4.   

    你的代码够精练,发给我看看[email protected]