调整窗口大小时,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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。