Holy cow, I wrote a book!
If you have a minimized window and want to know where it will
go when you restore it,
the GetWindowPlacement function will tell you.
In particular, the rcNormalPosition tells you where
the window would go if it were restored (as opposed to minimized or
One perhaps-non-obvious flag is WPF_RESTORETOMAXIMIZED.
This flag indicates that the window is currently minimized, but if
the user selects "Restore", it will restore to its maximized instead
of restored state.
(This may seem strange, but you see it every day without
even realizing. Take a window and maximize it. Now minimize it.
Now click the taskbar button to re-open the window. Notice that
it returns to its maximized state, not to its restored state.
Imagine how frustrated you would be if it returned to its restored
state instead. You'd have to keep re-maximizing the window.)
The GetWindowPlacement and SetWindowPlacement functions are
typically used by programs that wish to save/restore window
positioning information across runs.