我正在尝试获得对全屏无边框窗口工作的支持,但我发现的所有信息都没有帮助。
无论窗口是否设置为 WS_EX_TOPMOST,窗口将始终处于独占全屏模式。我已经使用 WinSpy++ 使用全屏无边框窗口模式检查了游戏中的窗口样式,我使用的样式是相同的。
我知道它处于独占全屏模式,因为 WDM 停止为我的窗口渲染小的 aero 预览。我还因聚焦和取消聚焦窗口而导致桌面闪烁。
我能够获得类似于我想要的行为的唯一方法是让 Windows 认为我不想要全屏模式。我这样做的方法是将窗口位置调整 1px,使其与屏幕的位置和大小不匹配。这会阻止 Windows 自动打开独占全屏模式。
我知道在 DirectX 中解决这个问题的方法很简单,就是创 build 备时将 windowed 标志设置为 true。但是,我从未在 OpenGL 中看到过类似的东西。
根据第一条评论编辑:
我的窗口没有使用任何第三方库,只有 Win32 和 OpenGL。
编辑:
我使用 WS_POPUP 作为窗口样式。在我做的一些 DirectX 测试中使用相同的窗口样式,我可以通过更改“windowed”属性正确地创建全屏无边框窗口或全屏独占窗口。
对于硬件,我在 Win7 x64 上使用带有最新驱动程序的 GTX690。
最佳答案
在 ChoosePixelFormat/SetPixelFormat 的 PIXELFORMATDESCRIPTOR 中使用 PFD_SUPPORT_COMPOSITION。
关于c++ - OpenGL 非独占全屏模式(又名全屏无边框窗口),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22259067/