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

原创 2007年10月10日 08:55:00

         当频繁往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(255255255));
        
//再画上图形
        
//这一句是调用默认的OnPaint(),把图形画在内存DC表上 
        DefWindowProc(WM_PAINT, (WPARAM)MemDC.m_hDC, (LPARAM)0); 

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

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

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

解决listview更新数据时,屏幕闪烁的问题

由于使用了universal-image-loader-1.9.2-SNAPSHOT-with-sources.jar这个第三方库来加载图片,用的时候是爽了,但是使用过程还是出了一些问题.... 之...
  • u014038534
  • u014038534
  • 2016年04月15日 11:45
  • 4226

winform频繁刷新导致界面闪烁解决方法

一、通过对窗体和控件使用双缓冲来减少图形闪烁(当绘制图片时出现闪烁时,使用双缓冲)对于大多数应用程序,.NET Framework 提供的默认双缓冲将提供最佳效果。默认情况下,标准 Windows 窗...
  • hpnet_zsh
  • hpnet_zsh
  • 2018年02月18日 20:15
  • 109

VC ++MFC列表框(CListBox)控件简单自绘

CObject←CCmdTarget←CWnd←CListBox CListBox类提供Windows列表框的功能。列表框显示项的列表,如用户可以见到和选择的文件名称。在单选列表框里,用户只可选择一...
  • bojie5744
  • bojie5744
  • 2014年05月21日 19:57
  • 1560

记MFC自绘ListBox闪烁处理

自绘CListBox时避免闪烁的方法。 先列出网上搜来的一段例子双缓冲绘制代码:     CRect rc;     GetWindowRect(&rc);     CDC CMDC;  ...
  • andrew57
  • andrew57
  • 2016年05月26日 23:03
  • 1023

如何防止在listbox中添加很多数据出现不停的刷新

[问题提出]     在listbox添加很多数据的时候,由于控件不停的刷新,导致出现闪烁,如何解决?   [解决方法]     再添加数据以前,禁止控件刷新,数据添加完毕以后,再刷新一次。 ...
  • lxh1230119
  • lxh1230119
  • 2012年07月12日 18:59
  • 2576

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

         当频繁往listbox里插入删除数据时,会出现闪烁的情况,这时就需要重绘listbox,当然还是用到双缓冲技术,代码如下: //重载OnEraseBkgndBOOL CMyListB...
  • tracing
  • tracing
  • 2007年10月10日 08:55
  • 2810

Qt刷新机制的一些总结

前段时间做过一个界面刷新的优化,遇到的坑比较多,在这里做一点点总结吧。     优化的方案是滚动滚动条的时候用截屏的方式代替界面全部刷新,优化完成后,界面在滚动时效率能提升大概一倍,背景介绍完毕...
  • hpjx1987
  • hpjx1987
  • 2016年02月04日 11:09
  • 5538

基于双缓冲技术解决视图刷新重绘闪烁问题

基于双缓冲技术解决视图刷新重绘闪烁问题 1.基本原理 普通视图绘制完成后直接在显示器窗口中显示,所以出现闪烁的现象。双缓冲技术,简单来说就是创建一块虚拟的内存区来存储画布,而显示器中只显示实际显示...
  • phnumber
  • phnumber
  • 2017年03月20日 16:00
  • 636

CLISTBOX 使用注意事项及多行选择

LISTBOX控件使用起来并不难,但有几点要注意 一、初始化 listBox控件必须初始化其存储容量,如果不初始化其存储容量,当超出默认分配大小的时候会产生溢出,而这时项目可能已经非常大,甚至经过...
  • harvic880925
  • harvic880925
  • 2012年06月18日 20:02
  • 2636

轻松消除贴图闪烁

//========================================================================//TITLE://    轻松消除贴图闪烁//AU...
  • norains
  • norains
  • 2006年12月25日 22:43
  • 4495
收藏助手
不良信息举报
您举报文章:CListBox频繁插入删除数据时,闪烁的问题
举报原因:
原因补充:

(最多只允许输入30个字)