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?

相关文章

文章浏览阅读2.2k次,点赞6次,收藏20次。在我们平时办公工作...
文章浏览阅读1k次。解决 Windows make command not found 和...
文章浏览阅读3.2k次,点赞2次,收藏6次。2、鼠标依次点击“计...
文章浏览阅读1.3w次。蓝光版属于高清版的一种。BD英文全名是...
文章浏览阅读974次,点赞7次,收藏8次。提供了更强大的功能,...
文章浏览阅读1.4w次,点赞5次,收藏22次。如果使用iterator的...