win32 窗口缩放时出现闪屏
今天无意发现之前写的一个小工具在缩放窗口的时候,出现闪屏,主要有两个位置:
工具栏出一闪屏
右侧的控制面板出现闪屏 (这个控制面板与多层元件组合而成)
之前真没注意到这个问题,平时都是最大化/恢复窗口,没缩放窗口,所以没发现这样的问题。
网上搜索了一下,,找到一些解决方案:
[百度文库] VC窗口闪烁问题的解决 -
我遇到的问题属于第2种情况:
原因二: 复杂的界面有多层窗口组成,当windows在窗口改变大小的时候是先重画父窗口,然后重画子窗口,子父 窗口重画的过程一般无法在一个刷新周期内完成,所以会呈现闪烁。 我们知道父窗口上被子窗口挡住的部分其实没必要重画的 解决方法:给窗口加个风格 WS_CLIPCHILDREN ,这样父窗口上被子窗口挡住的部分就不会重画了。 如果同级窗口之间有重叠,那么需要再加上 WS_CLIPSIBLINGS 风格
我在创建主窗口的相关代码中加一个dwStyle: WS_CLIPCHILDREN
就解决了闪屏的问正式。
今天还发现一个新的 dwExStyle:WS_EX_COMPOSITED (xp下什么双缓冲绘图机制)
相关的介绍:
?opt=admin
我在一个多层次控件的父窗口,其实就是一个类似java中的JPanel上,设置 dwExStyle: WS_EX_COMPOSITED
竟然可以解决缩放窗口时JPanel中控件重绘造成的闪屏情况。
但是,当我把这个指定给一个画图片的面板上,发现虽然彻底解决了图片重绘时的闪屏问题,但是电脑的CPU占用达到50%.
看来这个 dwExStyle: WS_EX_COMPOSITED 是要付出代价的.
2014-01-11
win32 窗口缩放时出现闪屏
温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/70764.html