两个不同的显示器上的两个全屏窗口

时间:2014-05-30 18:47:50

标签: c windows winapi

对于我的项目,我想在两个不同的显示器上打开两个全屏窗口。我使用ChangeDisplaySettingsEx()使每个监视器切换到我需要的分辨率(目前,每个监视器切换到640x480)。然后我想打开一个覆盖每个监视器上整个屏幕的WS_POPUP窗口。为了确保窗口保持在前面,我还设置了WS_EX_TOPMOST标志。

只要涉及一台显示器,这一切都正常。一旦我尝试在另一台显示器上打开第二个全屏窗口,第一台显示器上的窗口当然会失去焦点,突然出现在其他看起来很丑的窗户后面,因为我们现在处于640x480。这种行为当然是合乎逻辑的,因为只能有一个最顶层的窗口但是我应该如何在两个不同的监视器上使用两个全屏窗口呢?我不知何故需要强制两个窗口保持在前面并覆盖它们后面的所有其他窗口。

是否有一种干净的方式来实现这样的事情,或者这是不可能的,如果不诉诸hacky不那么确定 - 它是否将工作在更新或更旧的Windows版本方法?

谢谢!

2 个答案:

答案 0 :(得分:1)

  

它实际上是用于自助服务终端系统:)

这当然不应该是kiosk应用程序上的真正的问题。您应该从不运行任何其他创建窗口的进程。锁定机器以便不会发生这种情况至关重要。

那不是它结束的地方。强制视频模式也没有意义。当然,在配置机器时也应该这样做。您的ChangeDisplaySettingsEx()调用不仅是不必要的,而且有害。由于现在更换监视器可能需要软件更新。请记住,这不是不可能的,显示器通常是最快的信息亭的一部分。

不要帮助太多。

答案 1 :(得分:0)

有一种干净的方法可以实现这一点,尤其是在自助服务终端系统上。让您的桌面跨越两个显示器,然后放置一个窗口,使其覆盖两个显示器 - 完整桌面,即从左侧显示器的左上角到右侧显示器的右下角(与常规最大化到单个显示器相对)仅限当前监视器)。使用单个前景窗口,您应该不再有焦点问题。