using System.Runtime.InteropServices; namespace OBSBlur.Window; /// /// Contains information about the placement of a window on the screen. /// [Serializable] [StructLayout(LayoutKind.Sequential)] public struct WINDOWPLACEMENT { /// /// The length of the structure, in bytes. Before calling the GetWindowPlacement or SetWindowPlacement functions, set this member to sizeof(WINDOWPLACEMENT). /// /// GetWindowPlacement and SetWindowPlacement fail if this member is not set correctly. /// /// public int Length; /// /// Specifies flags that control the position of the minimized window and the method by which the window is restored. /// public int Flags; /// /// The current show state of the window. /// public ShowWindowCommands ShowCmd; /// /// The coordinates of the window's upper-left corner when the window is minimized. /// public Point MinPosition; /// /// The coordinates of the window's upper-left corner when the window is maximized. /// public Point MaxPosition; /// /// The window's coordinates when the window is in the restored position. /// public Rectangle NormalPosition; /// /// Gets the default (empty) value. /// public static WINDOWPLACEMENT Default { get { WINDOWPLACEMENT result = new WINDOWPLACEMENT(); result.Length = Marshal.SizeOf( result ); return result; } } public override string ToString() { return $"CMD: {ShowCmd,13} Min: {MinPosition} Max: {MaxPosition} Normal: {NormalPosition}"; } }