首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

满载OnPaint()时,何时才会调用自己的OnPaint()

2013-08-16 
重载OnPaint()时,何时才会调用自己的OnPaint()?自己在对话框上面画了些图案,但是被别的对话框扫过的时候,

重载OnPaint()时,何时才会调用自己的OnPaint()?
    自己在对话框上面画了些图案,但是被别的对话框扫过的时候,图案就没了,于是我重载了下CDialog的OnPaint()函数。
    但是我不知道OnPaint()的机制,不知道他何时会调用,老板说最好判断有窗口覆盖图案的时候在进行OnPaint(),否则系统会经常OnPaint(),浪费资源。请教下大神们,怎么判断图案有没有被覆盖?包括覆盖一半的时候也要重绘窗口。
[解决办法]
窗口失效后会自动调用OnPaint函数,使用函数Invalidate。
[解决办法]
你们老板竟然是这么说的?
在xp下窗口被覆盖后重新显示就会重绘。
在win7下就不会重绘了。

在OnPaint中做自己的绘制,别管覆盖不覆盖的。
记得不要定义CDialog::OnPaint();
[解决办法]
不要做无理的事。

Onpaint 其实就是处理WM_PAINT消息。默认时的调用都很合理。

当你觉得现在得刷新一下这个窗口了,就就可以Invalidate当前窗口的部分客户区。

或Send一个WM_PAINT的消息。
[解决办法]
会自动调用,不用你管
[解决办法]

引用:
引用:你们老板竟然是这么说的?
在xp下窗口被覆盖后重新显示就会重绘。
在win7下就不会重绘了。

在OnPaint中做自己的绘制,别管覆盖不覆盖的。
记得不要定义CDialog::OnPaint();
不要定义CDialog::OnPaint();是什么意思呃。。

就是在你的OnPaint里面把系统加的这一句去掉(这一句的意思是 由系统来画背景)
[解决办法]
主动刷新用Invalidate,其它在窗口失效后系统会自动调用OnPaint。

热点排行