Direct3D 9 のドキュメント ( Working with Multiple Monitor Systems ) によると: Direct3D9 オブジェクトであり、すべてが同じフォーカス ウィンドウを共有します。」
デバイスの初期化ごとに 2 つのウィンドウ ハンドルがあることに気付くでしょう。プレゼンテーション ウィンドウとフォーカス ウィンドウです。フォーカス ウィンドウ ( IDirect3D9::CreateDeviceに渡される) は、フォアグラウンドからバックグラウンドへの切り替えや Alt+Tab などのイベントの処理に使用されます。プレゼンテーション ウィンドウは D3DPRESENT_PARAMETERS 構造体に渡され、Direct3D のキャンバスとしてのみ使用されます。
作成するウィンドウの 1 つ (おそらく最初のウィンドウ) をフォーカス ウィンドウとしてマークする必要があります。デバイス間でフォーカス ウィンドウを共有しますが、「キャンバス」(プレゼンテーション) ウィンドウは分離したままにします。
編集: これも役立つかもしれません。
両方のデバイスのフォーカス ウィンドウを作成します。
(オプション) 最初のアダプターのデバイス ウィンドウを作成します。
2 番目のアダプターのデバイス ウィンドウを作成します。
direct3d9 コンテキストを作成します。
これを使用して両方のデバイスを作成します。
共有フォーカス ウィンドウと (オプションで) 最初のデバイス ウィンドウを使用して、最初のフルスクリーン デバイスを作成します。
共有フォーカス ウィンドウと 2 番目のデバイス ウィンドウを使用して、2 番目のフルスクリーン デバイスを作成します。
最初のデバイスをリセットします。
共有フォーカス ウィンドウは、パラメーターとして CreateDevice に直接渡されます。
デバイス ウィンドウは、プレゼンテーション パラメーター構造体で渡されます。