如果半快速拖动窗口的顶部或左边框,应该注意的是,窗口的另一边振动 - 它被拖累,但随后重新调整,以增加规模。
问题是差了很多,当你有一个动态调整的项目 - 然后一堆你的控制开始滑动和缩放屏幕上,很明显。
有什么办法来防止这些瞬态效应?
例如,也许应对类似消息的特定序列WM_SIZE
可以抑制呢? 我不知道。
(这似乎在每一个框架,我见过,甚至普通的Win32发生。只需打开浏览器或东西,拖动其顶部或左边,你会明白我的意思。)
如果半快速拖动窗口的顶部或左边框,应该注意的是,窗口的另一边振动 - 它被拖累,但随后重新调整,以增加规模。
问题是差了很多,当你有一个动态调整的项目 - 然后一堆你的控制开始滑动和缩放屏幕上,很明显。
有什么办法来防止这些瞬态效应?
例如,也许应对类似消息的特定序列WM_SIZE
可以抑制呢? 我不知道。
(这似乎在每一个框架,我见过,甚至普通的Win32发生。只需打开浏览器或东西,拖动其顶部或左边,你会明白我的意思。)
响应该WM_WINDOWPOSCHANGING
消息并设置SWP_NOCOPYBITS
标志在flags
所述的构件WINDOWPOS
结构。
2018年更新。 该WM_WINDOWPOSCHANGING
及相关WM_NCCALCSIZE
经常如此述及技巧运作良好XP / Vista / 7的,但不再足够的Win8 / 10,因为航空的调整即面膜,或加重,老问题问题的一个新的层增加。
该在Win8 / 10问题更难解决,因为你的像素的不必要的副本DWM.exe,从系统上所有应用复合像素另一个进程正在发生的事情。
请参阅本Q&A的一个解释是怎么回事,有一些示例代码WM_NCCALCSIZE
在XP / Vista / 7的层来解决这个问题(这仍然是那里的Win8 / 10!),和8/10的部分解决方案。
(; BG,BitBlt和DWM赢7-10)如何调整窗口大小时,尤其是拖动左/上边框顺利丑陋的抖动/闪烁/跳跃?