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

前端之家收集整理的这篇文章主要介绍了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

猜你在找的Windows相关文章