Qrimkiss 发表于 2014-7-26 09:20:21

易语言_启动窗口_尺寸被改变,怎么样才能做到不闪

当窗口中有多个控件要随窗口改变大小时,一般都会用到,尺寸被改变
尺寸被改变 时如果窗口中的控件比较多闪烁就很厉害,请问:
_启动窗口_尺寸被改变,怎么样才能做到不闪

rapking 发表于 2014-7-26 09:20:33

界面上窗口很多,而且改变大小时很多窗口都要移动和改变大小,如果使用MoveWindow或者SetWindowPos两个API来
改变窗口的大小和位置,由于他们是等待窗口重画完成后才返回,所以过程很慢,这样视觉效果就可能会闪烁。

解决方法:

使用以下API来处理窗口移动,BeginDeferWindowPos, DeferWindowPos,EndDeferWindowPos
先调用 BeginDeferWindowPos 设定需要移动的窗口的个数
使用DeferWindowPos,来移动窗口,这个API并不真的造成窗口移动
EndDeferWindowPos 一次性完成所有窗口的大小和位置的改变。

有个地方要特别注意,要仔细计算清楚要移动多少个窗口,BeginDeferWindowPos设定的个数一定要和实际的个数一致,否则在Win9x下,如果实际移动的窗口数多于调用BeginDeferWindowPos时设定的个数,可能会造成系统崩溃。在Windows NT系列下不会有这样的问题。
页: [1]
查看完整版本: 易语言_启动窗口_尺寸被改变,怎么样才能做到不闪