この質問は 2 年前のものです。私はちょうどそれに出くわしました。DX11でも同様の問題があり、デバッグバージョンで時々発生し、リリースバージョンで体系的に発生しました。私のパラダイムでは、プライマリ モニターはコンソールとオプションの「ボタンを押す」GUI をホストします。セカンダリ モニター (使用可能なモニターの 1 つ) は、フルスクリーンのアプリケーション ウィンドウで、2D のプロフェッショナルな画像が表示され、1D および 3D ルックアップ テーブルを使用して GPU 変換されます。
プライマリ モニターがブランクになることはショー ストッパーでした。必要なすべてのダイアログは、コンソール ウィンドウの子です (したがって、プライマリ モニターで開きます)。セカンダリ モニターは映画用デジタル プロジェクターです。
したがって、私の解決策は、対象のウィンドウが既にフルスクリーン モードになっているときに、ウィンドウ モードでスワップチェーンを作成することでした。
私に理由を聞かないで。わたしにはできる。ここにもう少しあります:
まず、表示ウィンドウがモニターの表面全体を占めるように設定されています (境界線もすべてもありません)。
次に、このウィンドウのスワップチェーンを「windowed = true」で作成します。
実際には、フルスクリーンに見えてもウィンドウ化されています。境界線がなくても、2D 画像の表示/レンダリングに関する限り、同じように機能します。バックバッファに直接フィードすることも機能します。
その後、バックバッファを実際の管理用フルスクリーンに切り替えることができます。この手術は非常に目に負担がかかるため、どうしても必要な場合にのみ行うようにしています。結果として、Win7 はデスクトップ全体 (したがって、すべてのモニター、すべてのウィンドウ) をリセットし、複数の光のフラッシュを作成します。
バックバッファが作成された後に実際のフルスクリーンになると、デスクトップのリセットの途中で立ち往生するというデサグメントを経験したことはありません(元の質問に戻ります)。
完全に言うと、「ウィンドウフルスクリーン」と「リアルフルスクリーン」には違いがあります。使えそうなもの。
必要に応じて 2 つのモードを切り替えると便利ですが、デスクトップをリセットするストレスが大きなペナルティとなります。