RT and wait!

解决方案 »

  1.   

    用SendMessage(TVM_SETITEMHEIGHT,(WPARAM)(SHORT)cyItemHeight,0)的时候可以及时的刷新树以显示正确的内容。
    而用 int nOldHeight = GetItemHeight(); 
    TVITEMEX itemEx; 
    itemEx.mask = TVIF_INTEGRAL; 
    itemEx.hItem = hItem; 
    itemEx.iIntegral = cyItemHeight/nOldHeight; 
    BOOL bRet = (BOOL)SendNotifyMessage(TVM_SETITEM,0, LPARAM(&itemEx)); 的时候,仅仅改变相关项的高度,但是其他项不会移动位置。(注意,我是在onpaint自绘的,根据各项来绘制。应该能重绘一轮onpaint显示正确的内容才对)
    请各位兄弟点拨点拨。。
      

  2.   

    CTreeCtrl好像没有办法修改其中一项的高度,而其他项不变化.我估计你不是真正的修改了那项的高度,否则下面的项会自动向下移动的.原来模仿QQ界面单击一项,单击的item会变大,我是借鉴别人的思想,把树控件相邻的两项合并为一项.你可以测试一下你变高的item是不是真正的变高了,在变高的部分触发item的一个消息响应,看看是本item还是下面那个item的.
      

  3.   

    变高是真的变高了。。
    我把树再收缩再展开,就是正常的了。显示了不同高度的item而且排列也很好。
      

  4.   

    通过如下方法可以解决你的问题 // 关闭更新flag
    m_FriendTree->SetRedraw(FALSE);
    // control对应的更新操作
    // 打开更新flag,刷新窗口
    m_FriendTree->SetRedraw(TRUE);
    m_FriendTree->Invalidate();
    m_FriendTree->UpdateWindow();