当最大化窗口最初被实现时,设计者希望移除调整大小的边框。他们没有移除它们,而是决定将这些边框绘制在屏幕边缘之外,在那里它们不会被看到。因此,最大化窗口的窗口矩形相当令人惊讶。 随着多显示器系统的出现,这个实施决策成为了一个问题。当时,有一些应用程序依赖于这种行为,因此Windows团队决定保留这种行为以保持兼容性。这意味着最大化的窗口会泄漏到相邻的屏幕上。随着时间的推移,窗口管理器获得了一些功能,这意味着它可以抑制泄漏。 和往常一样,Raymond Chen有一篇文章介绍了详细信息:Why does a maximized window have the wrong window rectangle?
2条答案
按热度按时间bqucvtff1#
当最大化窗口最初被实现时,设计者希望移除调整大小的边框。他们没有移除它们,而是决定将这些边框绘制在屏幕边缘之外,在那里它们不会被看到。因此,最大化窗口的窗口矩形相当令人惊讶。
随着多显示器系统的出现,这个实施决策成为了一个问题。当时,有一些应用程序依赖于这种行为,因此Windows团队决定保留这种行为以保持兼容性。这意味着最大化的窗口会泄漏到相邻的屏幕上。随着时间的推移,窗口管理器获得了一些功能,这意味着它可以抑制泄漏。
和往常一样,Raymond Chen有一篇文章介绍了详细信息:Why does a maximized window have the wrong window rectangle?
vxqlmq5t2#
我写了一个简单的程序,它捕捉WM_GETMINMAXINFO。这个消息允许在实际的最大化发生之前,修改最大化窗口的位置和大小。系统提供的默认值是:
我的屏幕分辨率是1440x900。
看起来,Windows在最大化后以这样的方式定位窗口,即客户端区域覆盖了最多的可用空间,而窗口的镶边隐藏在屏幕区域之外。