How can I distinguish whether a currently minimized window was maximized before that, as opposed to normal state in C#/WinForms?
if (WindowState == FormWindowState.Minimized)
{
Properties.Settings.Default.Location = RestoreBounds.Location;
Properties.Settings.Default.Size = RestoreBounds.Size;
Properties.Settings.Default.IsMaximized = ...; // How do I know if the window would be restored to maximized?
}
I want to make the position and state of my window persistent using the application settings and I'm following https://stackoverflow.com/a/1876326/492336 but if the window was minimized at the time of closing I don't want it to start minimized on the next application start (which is what the answer there currently does).
What I want is for the window to start maximized if it had been maximized at the time it was minimized, and to start in its normal state if it had been in normal state at the time it was minimized.
You can use
GetWindowPlacement
(a native Win32 API function) on a minimized window, and read back the Flags member from the WindowPlacement struct. If bit 0x02 is set, then the window was maximized before it became minimized.WinForms does not expose any
WindowStateChanged
event then you have to track it by yourself. Windows will send aWM_SYSCOMMAND
when form state changes: