我正在编写一个 Win7 桌面应用程序,并希望它从窗口无缝过渡到窗口全屏(反之亦然),并且主要通过调用SetWindowLongPtr来更新其样式,然后立即调用MoveWindow来更新其大小和位置. 问题是窗口闪烁一帧以显示其样式已更新,但未显示新的大小和位置。下一帧一切看起来都正确,但我试图避免这种单帧伪影。
我尝试颠倒调用 API 的顺序,但它只是改变了工件的外观。我也尝试隐藏窗口,调用 API,然后显示窗口,但这只会导致窗口消失一帧。
我知道一种选择是创建一个具有所需属性的新窗口,然后销毁旧窗口,但我想找到一个更便宜的替代方案。
那么有什么方法可以调用这些 API 并让它们在视觉上原子地反映吗?作为奖励,将多个生成的 WM_SIZE 消息合并为一个事件会很好,但我可以在消息处理程序中自己管理它。