Я проверил это с помощью блокнота и Spy ++ со следующим кодом:
#include <Windows.h>
int CALLBACK WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) {
HWND hwnd = FindWindow(NULL, L"Untitled - Notepad");
ShowWindow( hwnd, SW_HIDE );
Sleep(4000);
ShowWindow( hwnd, SW_SHOW );
return ERROR_SUCCESS;
}
Чтобы скрыть окно, вы должны получить WM_SHOWWINDOW, WM_WINDOWPOSCHANGING, а затем WM_WINDOWPOSCHANGED.
Для показа окна цель не получила WM_SHOWWINDOW, но все еще получила WM_WINDOWPOSCHANGING и WM_WINDOWPOSCHANGED.
Вы можете обработать WM_WINDOWPOSCHANGED и проверить флаги в WINDOWPOS на наличие SWP_HIDEWINDOW / SWP_SHOWWINDOW.