Данное внешнее (не принадлежащее текущему процессу) окно (hWnd
) сначала свернуто, а затем скрыто:
ShowWindowAsync(hWnd, SW_MINIMIZE);
// wait loop inserted here
ShowWindowAsync(hWnd, SW_HIDE);
Следующий вызов правильно восстанавливает его до минимального (восстановленного) состояния:
ShowWindow(hWnd, SW_RESTORE);
Однако этот вызов не:
ShowWindowAsync(hWnd, SW_RESTORE);
Во втором случае с ShowWindowAsync()
окно не свернуто и больше не скрыто, но не активировано (остается за другими существующими окнами). И наоборот, первый вызов ShowWindow()
правильно активирует окно.
Это ожидаемое поведение? Как восстановить окно (на передний план), не полагаясь на ShowWindow()
, который является синхронным (блокирующим)? (цикл ожидания в примере может иметь тайм-аут, в то время как ShowWindow()
не позволяет указание времени ожидания.)
(WinXP SP3)