DXGI がアプリケーションのメッセージキューを監視して Alt+Enter キーシーケンス (アプリケーションをウィンドウ表示とフルスクリーンの間で切り替える) を検出することを許可する。
IDXGIFactory_MakeWindowAssociation this, WindowHandle, Flags
this : [comobj] IDXGIFactory インターフェースの COM オブジェクト変数 WindowHandle : [intptr] 型: HWND 監視対象のウィンドウのハンドル。このパラメータは NULL にできるが、その場合は *Flags* も 0 でなければならない。 Flags : [int] 型: UINT
(プラグイン / モジュール : com_misc.dll)
DXGI がアプリケーションのメッセージキューを監視して Alt+Enter キーシーケンス (アプリケーションをウィンドウ表示とフルスクリーンの間で切り替える) を検出することを許可する。 [戻り値] 型: HRESULT WindowHandle が無効な場合は DXGI_ERROR_INVALID_CALL、または E_OUTOFMEMORY。 [備考] 注: このAPIをセッション 0 プロセスで呼び出すと DXGI_ERROR_NOT_CURRENTLY_AVAILABLE を返す。WindowHandle と Flags の組み合わせにより、以前に関連付けられたウィンドウのウィンドウメッセージ監視を停止するよう DXGI に指示する。アプリケーションがフルスクリーンモードに切り替わる際、DXGI は現在のバックバッファサイズ以上で最も小さいサポート解像度をフルスクリーン解像度として選択する。アプリケーションはウィンドウ表示からフルスクリーンへの切り替えをより効率的にするためにいくつかの調整ができる。たとえば WM_SIZE メッセージ到達時に、未処理のスワップチェーンバックバッファをすべて解放し、IDXGISwapChain::ResizeBuffers を呼び、そのあとバックバッファを取得し直すべきである。こうすることでスワップチェーンにバックバッファをリサイズしたり、フルスクリーンフリップ動作を可能にするために再生成したりする機会を与える。この手順を実行しない場合、DXGI はフルスクリーン / ウィンドウの遷移を行うが、バックバッファのサイズが正しくないためにストレッチ動作を強いられる可能性があり、効率が低下することがある。ストレッチが不要な場合でも、バックバッファがフロントバッファと直接交換可能でない可能性があるため、提示が最適でなくなる場合がある。したがって、WM_SIZE はフルスクリーン遷移中に常に送信されるので、WM_SIZE における ResizeBuffers 呼び出しは常に推奨される。ウィンドウ表示中にアプリケーションは任意で、描画に適したサイズにウィンドウクライアント領域のサイズを制限できる。完全に柔軟なアプリケーションはそのような制限をかけないが、UI 要素やその他の設計上の事情からその柔軟性は受け入れがたい場合がある。フルスクリーン解像度にマッチするサイズにウィンドウクライアント領域を制限したい場合、WM_SIZING を捕捉し、IDXGIOutput::FindClosestMatchingMode と比較するとよい。マッチするモードが見つかればリサイズを許可する (IDXGIOutput は IDXGISwapChain::GetContainingOutput で取得できる。デスクトップトポロジに以降の変更がなければ、Alt+Enter が捕捉されそのスワップチェーンに対してフルスクリーンモードが開始されたときに選ばれるのと同じ出力となる)。モード変更や Alt+Enter を自分で処理したいアプリケーションは、スワップチェーン生成後に DXGI_MWA_NO_WINDOW_CHANGES フラグで MakeWindowAssociation を呼ぶべきである。WindowHandle 引数が非 NULL の場合、DXGI ランタイムが特定の対象 HWND のすべてのスワップチェーンについてアプリケーションのメッセージキューを処理しないことを指定する。スワップチェーン生成後に DXGI_MWA_NO_WINDOW_CHANGES フラグを付けて MakeWindowAssociation を呼ぶことで、DXGI がアプリケーションによるウィンドウモード変更や Alt+Enter の処理に干渉しないことを保証できる。**MakeWindowAssociation** メソッドは、対象 HWND スワップチェーンに関連付けられたファクトリオブジェクトに対して呼び出す必要がある。これはスワップチェーンに対して [IDXGIObject::GetParent](/windows/win32/api/dxgi/nf-dxgi-idxgiobject-getparent) メソッドを呼び出してファクトリを特定することで保証できる。以下はそのコード例である。 (以下省略)
| プラグイン / モジュール | com_misc.dll |
| バージョン | 1.0 |
| 作成日 | 2026/04/16 |
| 著作者 | IronHSP / CsWin32 bridge |
| URL | https://github.com/inovia/IronHSP |
| 備考 | Win32 API の com_misc.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。 |
| タイプ | 拡張命令 |
| グループ | Win32API |
| 対応環境 |
|
| hs ファイル | hsphelp\win32_com_misc_gen2.hs |