看来我的问题可能与未回答的相关问题相同(OpenGL with GLUT on windows 7,全屏模式不显示消息框)。
由于我切换到 Win7 作为开发环境以及我的应用程序可能的目标平台,我注意到它们的行为出现了回归。
每当我有一个包含全屏 OpenGL 上下文的全屏窗口时,应用程序在显示模式对话框(例如消息框、文件打开对话框等)时都会出现问题
该窗口刚刚使用 WS_POPUP 样式创建。GL 上下文没有什么花哨的。Windows XP 一切正常。
Windows 7 下的问题是模式对话框在打开时是不可见的(可能它们出现在全屏窗口后面)。您必须 Alt-Tab 应用程序才能显示对话框。
这是一个主要问题,因为应用程序似乎被冻结,而实际上它正在等待用户输入。
有没有人遇到过这种行为?有谁知道解决方法?
我很快就制作了一个示例测试应用程序;它的源代码可以在http://pastebin.com/K4v2NNDs找到。可以在这里找到一个简单的 MSVC8 项目。
PS。我还在 opengl.org 论坛上发过帖子,对于那些同时关注这两个问题的人感到抱歉。
编辑
感谢 Chris 的评论,我已经测试了各种事件的模式对话框,例如 WM_TIMER 或 WM_RBUTTONUP,但问题仍然存在。
我还用“DWM_EC_DISABLECOMPOSITION”调用了“DwmEnableComposition”,只是为了检查:问题仍然存在。
我还通过用 DirectX 替换 OpenGL 位来测试应用程序,这样一切都按预期工作......这真的是 OpenGL 造成的问题。
(更新了 pastebin http://pastebin.com/Rq1Ehm3w和我的暂存器)
编辑
Windows 8 上也存在该问题。