我的无边框 WPF 窗口有问题。具体来说,它在窗口任务栏上方最大化,并且还以 -7 边距最大化,使窗口在每个方向上超出屏幕 7 个像素。
这可以通过设置窗口的 MaximizedBounds 属性在 winforms 中轻松解决,但 WPF 没有此属性。
我尝试通过 WndProc 拦截最大化消息并手动设置大小/位置来解决这个问题,但这存在将 RestoreRegion 覆盖为最大化大小/位置的问题,从而消除了恢复窗口的能力。
所以,我想我也许可以通过 PInvoke 设置窗口的 MaximizedBounds。
这个页面暗示它可以用 Win32 SetWindowPlacement 来完成......它采用一个称为 WINDOWPLACEMENT 的结构:
[Serializable]
[StructLayout(LayoutKind.Sequential)]
public struct WINDOWPLACEMENT
{
public int length;
public int flags;
public int showCmd;
public POINT minPosition;
public POINT maxPosition;
public RECT normalPosition;
}
我认为我只需要设置 Rectanle 和一个标志来指定它是用于 MaximizedBound 属性的,但是我在网上找不到任何这样的例子,而且我发现的任何标志都不像它可以完成这个。我在吠叫错误的树吗?如果是这样,有没有其他方法可以指定我忽略的 MaximizedBound (或类似的)?