当他们在 Windows 中全屏显示时,有没有人注意到使用 D3D 或 OpenGL 的应用程序的这种奇怪行为?它仅适用于应用程序进入全屏然后切换回窗口或终止时。他们要么洗牌其他应用程序的窗口位置(当我在单显示器机器上),或者当我在多显示器机器上时将所有其他应用程序窗口移动到另一个屏幕。
如果没有没有显示这两个异常的应用程序,我会认为这是理所当然的。那么,我的问题是,在编写应用程序以缓解这两个问题时,究竟需要注意什么?另外,我不确定这个问题是否存在于 Windows 以外的其他平台上?
我对此的主要设置是 OpenGL/C++,但我认为这适用于您拥有的任何设置,因为它似乎是需要处理的平台 API。
编辑:好的,这是对我的观察的更多说明。即使在与桌面相同的分辨率下,问题仍然存在。因此,它似乎与分辨率切换无关,因为我见过应用程序/游戏,即使它们与桌面的分辨率不同,当它们切换回来时,桌面上的窗口也会恢复到以前的状态全屏应用程序已运行。
edit2:看起来这是一个分辨率开关问题,Windows(至少是 XP)似乎不记得应用程序窗口的位置和大小(在多显示器设置的情况下)。看起来唯一的解决方案是我在对问题的回答中提供的解决方案——即使它看起来像是操作系统应该提供的东西,至少作为一个或两个 API 调用。我仍然不相信这是唯一的解决方案,一定有一种简单的方法可以优雅、轻松地恢复,不是吗?