Windows闪烁

时间:2014-01-09 05:47:18

标签: wpf windows winapi

我一直在钻研Win32(我的机器上的Windows 7)的内容,试图对抗调整大小或最大化窗口时发生的闪烁。基本上当你调整窗口大小时win32"帮助"通过将当前窗口内容blit到新客户区域的左上角。当然,现在这很少是想要的,正确的调整后版本紧随其后,但闪烁的blit仍然很烦人,特别是因为WPF已经很好地解决了其他场景中的许多闪烁问题。第二种是当手动放置窗户时,你经常会在右边缘和底边缘周围出现黑条或条纹,以及控制摇摆。这似乎是WPF布局管理器无法跟上DirectX。

作为我尝试过的解决方案:

拦截WM_NCCALCSIZE - 经过几个小时的修修补补,似乎没有任何好处。 尝试不同的窗口样式 - WS_POPUP,WS_BORDER,WS_OVERLAPPED等。 拦截最大化可最大限度地减小大小,并使用SetWindowPos手动调整大小。 将SetWindowPos与SWP_NOREDRAW |一起使用SWP_DEFERERASE。 在移动窗口之前发送WM_SETDRAW FALSE。

似乎没有任何作用 - 是否是HWND核心和无法控制的内部?也许我可以深入研究directx,或者反向工程User32.dll并对其进行修补。 (只是对后者半开玩笑)

最诚挚的问候, 史蒂夫

0 个答案:

没有答案