关于窗口Resize的另一个小问题
强制滚动条的整数型滚动可以解决界面绘制出现一根线的问题,但是当我们拖动窗口的上下边缘来调整窗口大小时,我们会发现:当窗口被试图拖到到一个非整型的大小时,窗口的大小调整反馈和实际的窗口大小不一致。
要更加清晰地观察到以上现象,需要启用系统中的”拖动时显示窗口内容”选项。
如何解决
通过WM_SIZING消息,我们可以在窗口大小调整时修正调整反馈。
以下代码展示了如何调整矩形大小来匹配鼠标释放时的矩形。
![40101cc44ca606967470889ebb460cdb.png](https://i-blog.csdnimg.cn/blog_migrate/6ab123dc8b280ee8d6e451899c2ab3c4.jpeg)
加入了以上代码后,我们可以观察到:当你拖动窗口时,窗口的大小完全匹配的窗口的实际拖动反馈的大小。当你垂直地水平地拖动鼠标时,窗口的大小会以一个整数单元值进行变化。
小练习
当我们强制对窗口大小调整进行整型化时,为什么我们也依然需要在WM_WINDOWPOSCHANGING消息的处理函数中强制整型化?
问题解答
因为WM_SIZING消息只是会在交互式调整窗口大小时发出,如果用户在任务栏点击右键然后选择”重叠窗口”,这将会直接对窗口进行大小调整,而不会经过WM_SIZING消息处理例程。
总结
对于滚动条的窗口自适应就先讲到这里,都是一些细枝末节的小知识。但是如果没有考虑到它们,则在呈现我们的产品界面时,或多或少会让我们的用户感到疑惑。另一方面,如果你和我一样,也是一个完美主义者,那么,不用我说,你也会不自觉对这些细节有兴趣。
做产品,慢慢来,不能操之过急。最终的目标还是:像个匠人一样,日复一日的打磨自己的东西。
我们将会在即将到来的第9章节带来滚动条系列的其他主题,敬请期待。
![83016879a8877986f185fee6ad9094bc.png](https://i-blog.csdnimg.cn/blog_migrate/187c038f3960b33c6847e73684f49933.jpeg)