ボーダレスWPFウィンドウで問題が発生しています。具体的には、ウィンドウのタスクバーの上で最大化し、-7のマージンで最大化し、ウィンドウを画面を超えて各方向に7ピクセルずつ最大化します。
これは、ウィンドウのMaximizedBoundsプロパティを設定することで、winformsで簡単に解決できますが、WPFにはこのプロパティがありません。
WndProcを介して最大化メッセージを傍受し、サイズ/位置を手動で設定してこの問題を解決しようとしましたが、RestoreRegionを最大化されたサイズ/位置に上書きし、ウィンドウを復元する機能を削除するという問題がありました。
そのため、PInvokeを使用してウィンドウのMaximizedBoundsを設定できる可能性があると思いました。
このページは、Win32SetWindowPlacementで実行できることを意味します...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(または同様のもの)を指定する他の方法はありますか?