博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
记MFC自绘ListBox闪烁处理
阅读量:2259 次
发布时间:2019-05-09

本文共 761 字,大约阅读时间需要 2 分钟。

自绘CListBox时避免闪烁的方法。

先列出网上搜来的一段例子双缓冲绘制代码:

CRect rc;    GetWindowRect(&rc);    CDC CMDC;    CMDC.CreateCompatibleDC(NULL);          CBitmap bmp;     bmp.CreateCompatibleBitmap(pDC,rc.Width(),rc.Height());     CBitmap * oldbmp  =CMDC.SelectObject(&bmp);    BITMAP bm;    bmp.GetBitmap(&bm);    CMDC.FillSolidRect(0,0,rc.Width(),rc.Height(),m_refdefbkColor);    // pDC为前端DC      pDC->bitBlt(0,0,rc.Width(),rc.Height(),&CMDC,0,0,bm.bmWidth,bm.bmHeight,SRCCOPY);    CMDC.SelectObject(oldbmp);    bmp.DeleteObject();    CMDC.DeleteDC();

具体做法为:

1.onerasebkgnd直接返回TRUE.

2.DrawItem和OnPaint双缓冲自绘。

这样基本是不会闪烁的。

如果在删除Item的时候删除并且有scrollbar情况下删除完后背景不会被item重绘,可以考虑setcursel(getcount()-1),假如为删除最后一个item,

并且settopindex这样就不会闪烁了。

以上是我在做自绘clistbox中遇到闪烁情况的解决方法,这样处理后频繁的invalidate不会闪烁。

转载地址:http://ahycb.baihongyu.com/

你可能感兴趣的文章
k8s 开船记:升级为豪华邮轮(高可用集群)与遇到奇怪故障(dns解析异常)
查看>>
Android使用Handler造成内存泄露的分析及解决方法
查看>>
Hash算法解决冲突的四种方法
查看>>
无法识别的属性“targetFramework”的解决方法
查看>>
[问题解决]NotImplementedError 错误原因:子类没有实现父类要求一定要实现的接口
查看>>
React中跨域问题的完美解决方案
查看>>
redis Could not connect to Redis at 127.0.0.1:6379: Connection refused 问题解决
查看>>
HTML`CSS_网站页面不同浏览器兼容性问题解决
查看>>
[微信] 微信商户号 资金解决方案 自动提现 关闭
查看>>
eclipse导入项目后出现红色叉号的解决方案
查看>>
Warning: Illegal string offset ‘account‘ in 解决方法
查看>>
解决NPM无法安装任何包的解决方案(npm ERR! code MODULE_NOT_FOUND)
查看>>
c#关于JWT跨域身份验证解决方案
查看>>
win10_x64更新错误解决: 安装一些更新时出现问题,但我们稍后会重试。如果持续出现这些问题,并且你想要搜索Web或联系支持人员以获取相关信息,以下信息可能会对你有帮助:
查看>>
解决异方差问题--加权最小二乘法
查看>>
Eclipse在高分屏下图标过小的解决方法
查看>>
c3p0:Connections could not be acquired from the underlying database!解决方案
查看>>
js中报错“Maximum call stack size exceeded“解决方法
查看>>
Spark应用程序第三方jar文件依赖解决方案
查看>>
springboot启动总是启动不起来UnsatisfiedDependencyException异常
查看>>