OnPaint闪烁

z15881328000 2010-05-02 05:48:24
我的绘图操作很多,好几个控件要重绘
我用Invalidate(TRUE);使窗口无效来重绘,闪烁很严重

CDC dcMem;
dcMem.CreateCompatibleDC(&dc); //创建兼容DC
...
dc.BitBlt(rect.left,rect.top,rect.Width(),rect.Height(),&dcMem,0,0,SRCCOPY);
可是其他不需要重绘的地方很闪烁啊
高手支招
...全文
570 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lin912703942 2011-03-09
  • 打赏
  • 举报
回复
这个楼主啊,把你的OnMyPaint函数贴出了看看可以吗
z15881328000 2010-05-03
  • 打赏
  • 举报
回复
谢谢各位的回答,我已经解决,自己做了个OnMyPaint,对局部重绘,闪烁消除
青稞 2010-05-02
  • 打赏
  • 举报
回复
OnEraseBkgnd中直接返回TRUE,否则会耍背景,会出现屏幕闪烁...
尹成 2010-05-02
  • 打赏
  • 举报
回复
没有覆盖WM_ERASEBKGND响应函数啊
在OnEraseBkgnd中不调用基类函数,直接返回TRUE试试看
zxdyu2009 2010-05-02
  • 打赏
  • 举报
回复

OnEraseBkgnd

return TRUE;
向立天 2010-05-02
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 fangxu1999 的回复:]
是不是没有覆盖WM_ERASEBKGND响应函数啊
在OnEraseBkgnd中不调用基类函数,直接返回TRUE试试看
[/Quote]

没错
需要处理OnEraseBkgnd
另外
你说控件要重绘
你的程序是基于对话框的?
fangxu1999 2010-05-02
  • 打赏
  • 举报
回复
是不是没有覆盖WM_ERASEBKGND响应函数啊
在OnEraseBkgnd中不调用基类函数,直接返回TRUE试试看
zyq5945 2010-05-02
  • 打赏
  • 举报
回复
Invalidate(TRUE)
换成
Invalidate(FALSE)试试。

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧