SetICMMode 関数は、指定したデバイスコンテキスト(DC)上でイメージカラーマネジメントを有効化、無効化、または問い合わせる。
SetICMMode hdc, mode
hdc : [intptr] デバイスコンテキストへのハンドルを識別する。 mode : [int] イメージカラーマネジメントをオンまたはオフにする。このパラメータは次の定数値のいずれかを取ることができる。
(プラグイン / モジュール : gdi32.dll)
SetICMMode 関数は、指定したデバイスコンテキスト(DC)上でイメージカラーマネジメントを有効化、無効化、または問い合わせる。 [戻り値] この関数が成功した場合、戻り値は非ゼロ値である。この関数が失敗した場合、戻り値はゼロである。ICM_QUERY が指定されて関数が成功した場合、返される非ゼロ値は現在のモードを示す ICM_ON または ICM_OFF である。 [備考] システムがデバイスの状態に一致する ICC カラープロファイルを見つけられない場合、SetICMMode は失敗してゼロを返す。デバイスコンテキスト(DC)に対して WCS が有効になると、ほとんどの Win32 API 関数を使って DC に渡される色はカラーマッチングされる。主な例外は BitBlt と StretchBlt である。ある DC から別の DC へのビットブロック転送(blit)を行う場合、2 つの DC はすでに互換性があり、カラー補正は必要ないと仮定される。そうでない場合、カラー補正が実行されることがある。具体的には、デバイス独立ビットマップ(DIB)を blit のソースとして使用し、blit を WCS が有効な DC に行う場合、カラーマッチングが実行される。これが望ましくない場合、BitBlt または StretchBlt を呼ぶ前に SetICMMode を呼び出して、コピー先 DC の WCS をオフにする。CreateCompatibleDC 関数を使用して DC 内にビットマップを作成する場合、ビットマップは 2 回カラーマッチングされる可能性がある。1 回は作成時、もう 1 回は blit が実行されるときである。理由は、CreateCompatibleDC 関数で作成された DC 内のビットマップは、ソース DC の現在のブラシ、ペン、パレットを取得するためである。しかし、新しい DC では WCS がデフォルトで無効になる。その後 SetICMMode 関数を使って新しい DC で WCS を有効にすると、カラー補正が行われる。CreateCompatibleDC 関数の使用による二重のカラー補正を防ぐには、CreateCompatibleDC 関数を呼び出す前に SetICMMode 関数を使って、ソース DC の WCS をオフにする。プリンタ DC から互換 DC が作成されるとき(CreateCompatibleDC を参照)、プリンタ DC に対して有効であれば、デフォルトでカラーマッチングが常に実行される。SetDIBitsToDevice または StretchDIBits を使用してプリンタ DC に blit を実行する場合、プリンタのデフォルトカラープロファイルが使用される。これが望ましくない場合、SetDIBitsToDevice または StretchDIBits を呼ぶ前に SetICMMode を呼び出して、プリンタ DC の WCS をオフにする。また、WCS を有効にしてプリンタ DC に印刷する場合、StartPage 関数の各呼び出しの後に WCS を再度オンにするために SetICMMode 関数を呼ぶ必要がある。StartPage 関数は RestoreDC と SaveDC 関数を呼び出し、その結果プリンタ DC の WCS がオフになる。
| プラグイン / モジュール | gdi32.dll |
| バージョン | 1.0 |
| 作成日 | 2026/04/16 |
| 著作者 | IronHSP / CsWin32 bridge |
| URL | https://github.com/inovia/IronHSP |
| 備考 | Win32 API の gdi32.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。 |
| タイプ | 拡張命令 |
| グループ | Win32API |
| 対応環境 |
|
| hs ファイル | hsphelp\win32_gdi32_gen2.hs |