主题:EM9170:双缓冲文字输出老是出问题,帮看看 共有57341人关注过本帖 |
---|
![]() shepher |
1楼 信息 | 搜索 | 邮箱 |
![]() ![]() ![]() ![]() |
EM9170:双缓冲文字输出老是出问题,帮看看 ![]() 最近做一个监控界面,需要使用大字体刷新测量数据,出现故障时需要将字色变为红色 m_hdcMem.SelectObject(m_hOldFont); m_hdcMem.SelectObject(m_hOldBMP); |
单帖管理 | 引用 | 回复 ![]() |
![]() yy |
2楼 信息 | 搜索 | 邮箱 |
![]() ![]() ![]() ![]() |
![]()
光这段代码没看出有什么问题,也与内存无关。OnPaint是当窗口刷新时才会调用,一般是窗口显示或者顶层遮挡的窗口移动的时候才行。你这个情况感觉OnPaint根本没有被调用到,你的timer里是怎么刷新窗口的呢?用Invalidate?要不你去掉部分控件窗口,然后在OnPaint里面设个断点,然后看看出问题时这个OnPaint到底调用到没有。
|
单帖管理 | 引用 | 回复 ![]() |
![]() yy |
3楼 信息 | 搜索 | 邮箱 |
![]() ![]() ![]() ![]() |
![]()
看了你的代码,发现只要使用了自定义控件,在刷新控件的时候就可能会4kb,4kb这样增加占用的内存,当增加到一定程度后就会开始有释放,然后稳定在一个位置,估计是GDI的一个机制吧,不是你代码的问题,关闭窗口后过一会这部分内存就释放了,不会影响到应用,你可以通过设置将用户使用内存再设大些。
[此贴子已经被作者于2012-11-21 13:43:40编辑过]
|
单帖管理 | 引用 | 回复 ![]() |
![]() yy |
4楼 信息 | 搜索 | 邮箱 |
![]() ![]() ![]() ![]() |
![]()
恩,这个问题算解决了。
如果自定义控件,并且重写了ON_WM_ERASEBKGND的处理函数,擦背景时就容易导致4kb的内存占用,所以只有使用Invalidate(FALSE);更新时不擦除背景。 或者不要重写这个消息的处理函数,就不会出问题了。
|
单帖管理 | 引用 | 回复 ![]() |