给定的外部窗口(不属于当前进程)窗口(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)
发布于 2011-09-27 02:11:10
下面是使用的解决方案:
ShowWindowAsync(hWnd, SW_SHOW);
// wait loop inserted here
ShowWindowAsync(hWnd, SW_RESTORE);这实质上是用于隐藏窗口的片段的反转:
ShowWindowAsync(hWnd, SW_MINIMIZE);
// wait loop inserted here
ShowWindowAsync(hWnd, SW_HIDE);发布于 2011-09-26 23:21:05
ShowWindowAsync将显示窗口事件发布到给定窗口的消息队列中。特别是,窗口是由它的线程而不是您的线程显示的。不同的是,您的线程是前台线程,因此可以激活另一个窗口,这是它自己做不到的。
https://stackoverflow.com/questions/7562280
复制相似问题