winapi – 何时(以及如何)布置Win32窗口的子项以响应调整大小?

调整窗口大小时,Windows会发送几条消息:

> WM_GETMINMAXINFO
> WM_ENTERSIZEMOVE
> WM_EXITSIZEMOVE
> WM_NCCALCSIZE
> WM_SIZING
> WM_SIZE
> WM_WINDOWPOSCHANGING
> WM_WINDOWPOSCHANGED

甚至可能更多.

如果我想在调整窗口大小时重新定位孩子,我应该在哪里以及如何这样做?
我正在寻找“最好的”方法 – 即具有最少陷阱和最少闪烁的方法.

我目前的方法是使用DeferWindowPos在WM_NCCALCSIZE中执行所有重新定位.
但是,我也试过在WM_WINDOWPOSCHANGED中处理它…但无论我在哪里处理它,似乎总是至少有一个“时刻”当窗口被绘制在中间状态,窗口的大小已经改变,但其内容尚未调整大小.

我还想避免的另一个影响:在孩子移动后移动孩子.我不希望用户看到控件滑落然后因为我的更改而备份 – 它应该具有尽可能少的瞬态效果.

我这样做了吗?是否有一个更好的地方可以摆放窗户的孩子?

您应该在WM_SIZE消息中重新定位窗口,因为这是窗口在完成任务之前收到的最后一个…要重新定位窗口,您可以使用MoveWindow

相关文章

Windows2012R2备用域控搭建 前置操作 域控主域控的主dns:自...
主域控角色迁移和夺取(转载) 转载自:http://yupeizhi.blo...
Windows2012R2 NTP时间同步 Windows2012R2里没有了internet时...
Windows注册表操作基础代码 Windows下对注册表进行操作使用的...
黑客常用WinAPI函数整理之前的博客写了很多关于Windows编程的...
一个简单的Windows Socket可复用框架说起网络编程,无非是建...