我的无边界WPF窗口出现问题。具体来说,它在窗口任务栏上方最大化,并且还以-7边距最大化,使窗口在每个方向上最大化超出屏幕7个像素。
通过设置窗口的MaximizedBounds属性可以在winforms中轻松解决,但WPF没有此属性。
我尝试通过WndProc解决这个拦截最大化消息并手动设置大小/位置,但是这有一个问题,即将RestoreRegion覆盖到最大化的大小/位置,从而无法恢复窗口。
所以,我认为我可以通过PInvoke设置窗口的MaximizedBounds。
This page暗示可以使用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(或类似)?
答案 0 :(得分:0)
在进入P / Invoke路由之前我会尝试这样的事情 - 没有我知道的WM_SETMINMAXINFO
消息,所以你可能需要覆盖你的WinProc来处理{{ 1}}并返回虚假数据....但无论如何,首先尝试这个,看看它是否适合你:
WM_GETMINMAXINFO