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

关于自绘窗体的一个小疑点

2013-06-26 
关于自绘窗体的一个小问题小弟最近想做一个自绘窗体,实现一些美化效果。但是我发现如果在窗体的PAINT事件里

关于自绘窗体的一个小问题
小弟最近想做一个自绘窗体,实现一些美化效果。
但是我发现如果在窗体的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

热点排行