我無法使用我的無邊框WPF窗口。具體來說,它是在Windows任務欄上方最大化的,並且還具有-7邊距最大化,使窗口在每個方向上最大化超出屏幕7個像素。是否可以通過PInvoke指定WPF窗口的MaximizedBounds?
通過設置窗口的MaximizedBounds屬性可以很容易地解決這個問題,但是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(或類似的)?
我已經試過你的第二個建議,但由於-7保證金,這導致窗口仍然被轉移7像素向上和向左,並且7個像素太短而不能填充屏幕的其餘部分。我最終使用了第一個建議,並且我覆蓋了WM_GETMINMAXINFO以返回活動監視器的正確尺寸。謝謝! – Chronicide