【发布时间】:2014-05-30 18:47:49
【问题描述】:
对于我的一个项目,我想在两个不同的显示器上打开两个全屏窗口。我使用 ChangeDisplaySettingsEx() 让每台显示器切换到我需要的分辨率(目前,每台显示器都切换到 640x480)。然后我想在每台显示器上打开一个覆盖整个屏幕的 WS_POPUP 窗口。为了确保窗口保持在前面,我还设置了 WS_EX_TOPMOST 标志。
只要只涉及一个监视器,这一切都可以正常工作。一旦我尝试在另一台显示器上打开第二个全屏窗口,我在第一台显示器上的窗口当然会失去焦点并突然出现在其他看起来非常难看的窗口后面,因为我们现在处于 640x480 中。这种行为当然是合乎逻辑的,因为只能有一个最顶层的窗口,但是我应该如何在两个不同的显示器上使用两个全屏窗口呢?我需要强制两个窗口保持在前面并覆盖它们后面的所有其他窗口。
有没有一种干净的方法来实现这样的事情,或者如果不求助于 hacky not-so-sure-whether-it-will-work-in-newer-or-older-Windows-versions 方法,这根本不可能?
谢谢!
【问题讨论】:
-
任意数量的窗口都可以具有
WS_EX_TOPMOST窗口样式。如果失去输入焦点,窗口也不会失去这种窗口样式。如果没有看到代码,很难判断你哪里出错了。 -
如果您的程序失败并且没有恢复显示分辨率会怎样?这在任何应用程序中都是不可接受的。 (除了售货亭之类的。)只是说。
-
它实际上是一个信息亭系统:)
-
@Andreas 继续,然后。 :)
-
@IInspectable:是的,MSDN 文档似乎证实了这一点。我想我得再调查一些……也许这真的是我的代码中的一个问题。