关于自绘窗体的一个小问题
小弟最近想做一个自绘窗体,实现一些美化效果。
但是我发现如果在窗体的PAINT事件里,加入任何有关窗体绘画的代码,就会重复触发PAINT事件,这样会导致程序的PAINT时间无限触发,进入死循环。
所以我想请问一下,怎样在窗体的PAINT事件中对窗体自绘的同时又不重复触发PAINT事件,避免上述死循环?
[解决办法]
要使用paint事件,autoredraw必须设置false
paint事件代码里,包含调用的函数中,不能使用refresh或等效的API
或者将autoredraw设置true,使用show事件,则只有在窗口加载的时候执行一次show事件,其后都由VB负责重绘
[解决办法]
处理事件重入属于编程的基本功。
Private Sub Form_Paint()
Static bInPaint As Boolean
If bInPaint Then Exit Sub
bInPaint = True
'绘图
DoEvents
bInPaint = False
End Sub