如何让 CListCtrl 在拖动的时候不那么闪。我用的是 虚拟列表 风格 ,并且是自绘画Item。在自绘制的时候,还要去数据库里查询相关数据。
所以在拖动滚动条的时候,刷的厉害。看起来很不舒服。
如何做能好一些呢?

解决方案 »

  1.   

    是不是底色闪?
    将画底色的部分去掉就可以了!
    重载OnEraseBkGnd ,在里面直接返回,不要调用任何代码!
    http://topic.csdn.net/u/20091012/14/2b948708-6d7b-498a-9806-a2adbd000c5d.html
    看看这个里面 Tr0j4n 的回复,也许有帮助!
      

  2.   

    你自绘了ClistCtrl 删除自绘类里面的Onpaint函数试试效果
      

  3.   

    重载OnEraseBkGnd ,在里面直接返回,或者处理lbuttondown 和lbuttonup消息, down时listctrl.SetRedraw(FALSE);,up时SetRedraw(TRUE);
      

  4.   

    谢谢 1楼和4楼!重载OnEraseBkGnd ,在里面直接返回这样效果就好多了,但是,如果我的列表框中只有一条记录,那么,其他空的地方就会保留先前的画面
    例如 我先前的画面是 AAAAAAAAAA
    AAAAAAAAAA
    AAAAAAAAAA
    AAAAAAAAAA
    AAAAAAAAAA 
    ——————如果只有一条记录
    那么会出现下面的情况:第一条记录1
    AAAAAAAAAA
    AAAAAAAAAA
    AAAAAAAAAA
    AAAAAAAAAA 
    ——————而我希望是 第一条记录1——————
    因为在 OnEraseBkGnd 直接返回,所以就不会去刷新背景。如何解决?