windows – 为什么最大化的Delphi形式比GetSystemMetrics值宽8个像素?

前端之家收集整理的这篇文章主要介绍了windows – 为什么最大化的Delphi形式比GetSystemMetrics值宽8个像素?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如果我最大化Delphi形式,宽度和高度值比相应的GetSystemMetrics SM_CXSCREEN和SM_CYSCREEN大8个像素?

例如:

当我右键单击我的屏幕并获得属性时,我的屏幕分辨率为1680 X 1050.这些是从GetSystemMetrics(SM_CXSCREEN)和GetSystemMetrics(SM_CYSCREEN)返回的相同值.

当我在Delphi应用程序中最大化表单时,我得到1688的宽度和1058的高度.有8像素的差异.是什么导致这种差异?

当最大化窗口最初实现时,设计者想要删除调整大小的边框.而不是删除它们,而是决定将这些边界绘制在屏幕边缘之外,在那里它们将不会被看到.因此,最大化窗口的相当令人惊讶的窗口矩形.

随着多监视器系统的出现,这一实现决策成为一个问题.到那时,有些应用程序依赖于此行为,因此Windows团队决定为了兼容性而保留该行为.这意味着最大化的窗口泄漏到相邻的屏幕上.随着时间的推移,窗口管理器获得了能够抑制泄漏的功能.

像往常一样,Raymond Chen有一篇文章涵盖了细节:Why does a maximized window have the wrong window rectangle?

猜你在找的Windows相关文章