读书人

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

发布时间: 2013-08-16 14:29:57 作者: rapoo

重载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。

读书人网 >C++

热点推荐