私の問題は、未回答の関連する質問 ( Windows 7 で GLUT を使用した OpenGL、フルスクリーン モードではメッセージ ボックスが表示されない) と同じようです。
開発環境として 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」を呼び出しました:問題はまだあります。
また、OpenGL ビットを DirectX に置き換えてアプリケーションをテストしましたが、この方法ですべてが期待どおりに機能します...実際に問題を引き起こしているのは OpenGL です。
(更新されたペーストビンhttp://pastebin.com/Rq1Ehm3wと私のスクラッチパッド)
編集
この問題は Windows 8 でも発生します。