窗体在 Windows 8 上显示错误的尺寸 - 如何获得真实尺寸?尺寸、窗体、如何获得、错误

由网友(、我的傷唯你可治)分享简介:在 Windows 8 上,将表单边框样式设置为 Sizable 的 WinForms 表单,有关.我会尝试看看这是否也能解决我的问题.更新 2:为了完整起见,以下是 VMware Windows 7 的结果:更新 3:终于找到了一个解决方案,涉及使用 DwmGetWindowAttribute 函数 与 DWMWA_...

在 Windows 8 上,将表单边框样式设置为 Sizable 的 WinForms 表单,有关.我会尝试看看这是否也能解决我的问题.

更新 2:

尴尬 微软再次向Windows 10用户提供了错误的更新

为了完整起见,以下是 VMware Windows 7 的结果:

更新 3:

终于找到了一个解决方案,涉及使用 DwmGetWindowAttribute 函数 与 DWMWA_EXTENDED_FRAME_BOUNDS 值.我将在下面发布答案.

解决方案

为了回答我自己的问题,我终于找到了一个解决方案,涉及使用 DwmGetWindowAttribute函数和DWMWA_EXTENDED_FRAME_BOUNDS

答案的灵感来自 此来源代码 提供了一个似乎适用于所有系统的功能.核心是一个函数:

public static Rectangle GetWindowRectangle(IntPtr handle){if (Environment.OSVersion.Version.Major