对于CTreeCtrl控件, VC 6 默认鼠标双击一个结点,结点展卡和收缩,此时可以实现结点图标随着展开和收缩变化。问题是 我想改为单击结点展开或收缩,同时结点前面的图标也发生变化。 现在实现了单击展开或收缩,但是图标改变不了。 怎么回事啊。 改变图标的代码在 TVN_ITEMEXPANDED 的处理函数里实现的。

解决方案 »

  1.   

    CTreeCtrl::SetItemImage
    BOOL SetItemImage( HTREEITEM hItem, int nImage, int nSelectedImage );将nImage、nSelectedImage 都设成你希望的图标,展开和收缩时都去修改图标。
      

  2.   

    单击展开之后,同时要把焦点设置为本节点,这样图标就发生改变了(如果你设置了selected的图标)
      

  3.   

    你是怎么实现单击展开或收缩的?
    如果你是调用Expand()来实现的,那么你的问题应该是没有产生TVN_ITEMEXPANDED 消息。
    以上是我的猜测,不知道对不对?
      

  4.   

    hTreeCurrent=m_wndTree.GetSelectedItem ();
    hTreeChild=m_wndTree.GetChildItem(m_wndTree.GetSelectedItem ());
    //-------------------树型控件的图标更改---------
    m_wndTree.SetItemImage(hTreeCurrent,1,true );
      

  5.   

    to coldcrane(清风明月):
    是的。怎么产生TVN_ITEMEXPANDED消息啊,,用sendmessage好像不行啊