【发布时间】:2011-09-26 22:51:42
【问题描述】:
给定的外部(不属于当前进程)窗口(@987654321@)首先被最小化,然后隐藏:
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)
【问题讨论】:
-
调用 ShowWindow() + SetForegroundWindow().
-
@HansPassant:这是一个阻塞(同步)调用,我试图避免。
标签: winapi shell windows-xp window