Could you catch and monitor the WM_SHOWWINDOW message (at least to detect the minimized or visible states)?
The WM_SHOWWINDOW message is sent to a window when the window is about to be hidden or shown.
wParam - Specifies whether a window is being shown. If wParam is TRUE, the window is being shown. If wParam is FALSE, the window is being hidden.
lParam - Specifies the status of the window being shown. If lParam is zero, the message was sent because of a call to the ShowWindow function; otherwise, lParam is one of the following values:
SW_OTHERUNZOOM The window is being uncovered because a maximize window was restored or minimized.
SW_OTHERZOOM The window is being covered by another window that has been maximized.
SW_PARENTCLOSING The window's owner window is being minimized.
SW_PARENTOPENING The window's owner window is being restored