为什么GetWindowPlacement总是返回MaxPosition -1, -1

本文关键字:MaxPosition 返回 GetWindowPlacement 为什么 | 更新日期: 2023-09-27 18:16:14

为什么GetWindowPlacement总是返回(-1,-1)为MaxPosition?到目前为止,我还没有得到任何其他的结果。

var f = new Form();
f.Show();
// Position in second monitor
f.Bounds = new Rectangle(2100, 10, 200, 200);
f.WindowState = FormWindowState.Maximized;
var wp = new User32.WINDOWPLACEMENT { Length = Marshal.SizeOf<User32.WINDOWPLACEMENT>() };
if (!User32.GetWindowPlacement(f.Handle, ref wp)) throw new Win32Exception();
// wp.ptMaxPosition.X == -1 and wp.ptMaxPosition.Y == -1

根据文档,ptMaxPosition包含'当窗口最大化时窗口左上角的坐标'

为什么GetWindowPlacement总是返回MaxPosition -1, -1

因为它在最大化时被设置在屏幕外1像素,以隐藏部分框架。请记住,窗口大小不是客户区大小,而是包括框架和顶部栏等内容。

其中1个像素在最大化时被隐藏