EngCreatePalette

EngCreatePalette 関数は、RGB パレットを作成するよう GDI に要求を送る。

EngCreatePalette iMode, cColors, pulColors, flRed, flGreen, flBlue

iMode : [int] 
cColors : [int] iMode パラメータが PAL_INDEXED の場合、cColors は pulColors が指す配列に提供される色数を指定する。それ以外の場合、このパラメータはゼロにすべきである。
pulColors : [var] iMode が PAL_INDEXED の場合の ULONG 値配列の先頭へのポインタ。各 ULONG の下位 3 バイトがパレット内の RGB 色を定義する。
flRed : [int] iMode パラメータが PAL_BITFIELDS の場合、flRed, flGreen, flBlue パラメータは赤・緑・青に対応するビットを示すマスクである。各マスクは連続するビットで構成され、他のマスクと重なってはならない。GDI はビットフィールドのすべての組み合わせをサポートする。
flGreen : [int] iMode パラメータが PAL_BITFIELDS の場合、flRed, flGreen, flBlue パラメータは赤・緑・青に対応するビットを示すマスクである。各マスクは連続するビットで構成され、他のマスクと重なってはならない。GDI はビットフィールドのすべての組み合わせをサポートする。
flBlue : [int] iMode パラメータが PAL_BITFIELDS の場合、flRed, flGreen, flBlue パラメータは赤・緑・青に対応するビットを示すマスクである。各マスクは連続するビットで構成され、他のマスクと重なってはならない。GDI はビットフィールドのすべての組み合わせをサポートする。

(プラグイン / モジュール : gdi32.dll)

解説

EngCreatePalette 関数は、RGB パレットを作成するよう GDI に要求を送る。

[戻り値]
関数が成功した場合、戻り値は新しいパレットへのハンドルとなる。それ以外の場合はゼロとなり、エラーコードがログに記録される。

[備考]
ドライバは DEVINFO 構造体内にパレットへのポインタを返すことで、新しいパレットをデバイスに関連付けられる。デバイスに関連付けられた
PAL_INDEXED パレットは、最初のインデックスエントリを黒 (red = 0, green = 0, blue =
0)、最後のエントリを白 (255, 255, 255) に設定しなければならない。他のすべてのエントリは、インデックスが互いに 1
の補数であるエントリが大きく対比する色となるように設定する。例えば 16 エントリパレットのエントリ 0x9 が純緑 (0,255,0)
なら、エントリ 0x6 (=~0x9) は緑とよく対比する暗紫 (128,0,128)
のような色にする。このようにエントリを設定することで、XOR ラスタ操作が妥当に動作する。パレットが不要になったら
EngDeletePalette で削除すべきである。

情報

プラグイン / モジュールgdi32.dll
バージョン1.0
作成日2026/04/16
著作者IronHSP / CsWin32 bridge
URLhttps://github.com/inovia/IronHSP
備考Win32 API の gdi32.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。
タイプ拡張命令
グループWin32API
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\win32_gdi32_gen2.hs