重载OnPaint()时,何时才会调用自己的OnPaint()?
自己在对话框上面画了些图案,但是被别的对话框扫过的时候,图案就没了,于是我重载了下CDialog的OnPaint()函数。
但是我不知道OnPaint()的机制,不知道他何时会调用,老板说最好判断有窗口覆盖图案的时候在进行OnPaint(),否则系统会经常OnPaint(),浪费资源。请教下大神们,怎么判断图案有没有被覆盖?包括覆盖一半的时候也要重绘窗口。
[解决办法]
窗口失效后会自动调用OnPaint函数,使用函数Invalidate。
[解决办法]
你们老板竟然是这么说的?
在xp下窗口被覆盖后重新显示就会重绘。
在win7下就不会重绘了。
在OnPaint中做自己的绘制,别管覆盖不覆盖的。
记得不要定义CDialog::OnPaint();
[解决办法]
不要做无理的事。
Onpaint 其实就是处理WM_PAINT消息。默认时的调用都很合理。
当你觉得现在得刷新一下这个窗口了,就就可以Invalidate当前窗口的部分客户区。
或Send一个WM_PAINT的消息。
[解决办法]
会自动调用,不用你管
[解决办法]