CListBox频繁插入删除数据时,闪烁的问题

CListBox频繁插入删除数据时,闪烁的问题

         当频繁往listbox里插入删除数据时,会出现闪烁的情况,这时就需要重绘listbox,当然还是用到双缓冲技术,代码如下:
// 重载OnEraseBkgnd
BOOL CMyListBox::OnEraseBkgnd(CDC *  pDC)
{
       
//直接返回,不重绘背景
        return TRUE;
}



// 重载OnPaint

void  CMyListBox::OnPaint()
{
        CPaintDC dc(
this); // device context for painting
   
        CRect   rect;
        GetClientRect(
&rect);

        CDC   MemDC;
//内存DC
        CBitmap   MemBmp;
        MemDC.CreateCompatibleDC(
&dc);
        MemBmp.CreateCompatibleBitmap(
&dc, rect.Width(), rect.Height());
        MemDC.SelectObject(
&MemBmp);
       
//这时创建的位图只是一张黑色的纸
       
//先画上背景   
        MemDC.FillSolidRect(rect, RGB(255, 255, 255));
       
//再画上图形
       
//这一句是调用默认的OnPaint(),把图形画在内存DC表上
        DefWindowProc(WM_PAINT, (WPARAM)MemDC.m_hDC, (LPARAM)0);

       
//输出
        dc.BitBlt(0, 0, rect.Width(), rect.Height(), &MemDC, 0, 0, SRCCOPY);
   
        MemDC.DeleteDC();
        MemBmp.DeleteObject();
  }

 其中DefWindowProc比较关键,wParam的值是要绘图的DC,查下MSDN里的WM_PAINT就知道了。

以上代码在WINDOWS XP VC6.0调试通过

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值