EngBitBlt

EngBitBlt 関数は、デバイス管理サーフェス間、またはデバイス管理サーフェスと GDI 管理の標準フォーマットビットマップ間で、汎用ビットブロック転送機能を提供する。

EngBitBlt psoTrg, psoSrc, psoMask, pco, pxlo, prclTrg, pptlSrc, pptlMask, pbo, pptlBrush, rop4

psoTrg : [var] 描画先のサーフェスを識別する SURFOBJ 構造体へのポインタ。
psoSrc : [var] rop4 が必要とする場合の、ビットブロック転送操作のソースを定義する SURFOBJ 構造体へのポインタ。
psoMask : [var] マスクとして使用するサーフェスを定義する SURFOBJ 構造体へのポインタ。マスクは 1 ピクセルあたり 1 ビットのビットマップとして定義される。通常、マスクは宛先サーフェスで変更される領域を制限する。マスキングは値 0xAACC の rop4 で選択される。マスクが 0 のとき宛先サーフェスは影響を受けない。マスクは宛先矩形を覆うのに十分な大きさである。このパラメータの値が NULL かつ rop4 がマスクを必要とする場合、ブラシ内の暗黙のマスクが使用される。マスクが必要な場合、psoMask はブラシ内の暗黙のマスクを上書きする。
pco : [var] CLIPOBJ 構造体へのポインタ。CLIPOBJ_Xxx サービスルーチンが、クリップ領域を矩形の集合として列挙するために提供される。この列挙は変更される宛先の領域を制限する。可能な限り GDI はクリッピングを単純化する。例えばこの関数は決して単一クリッピング矩形では呼ばれない。GDI はこの関数を呼ぶ前に宛先矩形をクリップするので、追加のクリッピングは不要である。
pxlo : [var] ソースとターゲットのサーフェス間でカラーインデックスをどう変換するかを示す XLATEOBJ 構造体へのポインタ。
prclTrg : [var] 宛先サーフェスの座標系で変更する領域を定義する RECTL 構造体へのポインタ。矩形は左上と右下の 2 点で定義される。この矩形の下辺と右辺はビットブロック転送の一部ではない(右下を含まない)。EngBitBlt は決して空の宛先矩形で呼ばれない。矩形を定義する 2 点は常に整列している。
pptlSrc : [var] ソースが存在する場合の、ソース矩形の左上隅を定義する POINTL 構造体へのポインタ。ソースがない場合、ドライバはこのパラメータを無視すべきである。
pptlMask : [var] マスク内のどのピクセルが宛先矩形の左上隅に対応するかを定義する POINTL 構造体へのポインタ。psoMask にマスクが指定されない場合、ドライバはこのパラメータを無視すべきである。
pbo : [var] ビットブロック転送のパターンを定義するために使用する BRUSHOBJ 構造体へのポインタ。GDI の BRUSHOBJ_pvGetRbrush サービスルーチンがデバイスのブラシ実体化を取得する。rop4 パラメータがパターンを必要としない場合、ドライバはこのパラメータを無視できる。
pptlBrush : [var] 宛先サーフェス上のブラシ原点を定義する POINTL 構造体へのポインタ。ブラシの左上ピクセルがこの点に整列され、ブラシはその寸法に従って繰り返される。rop4 パラメータがパターンを必要としない場合、このパラメータは無視する。
rop4 : [int] マスク、パターン、ソース、宛先ピクセルがどのように組み合わされて宛先サーフェスへ出力ピクセルを書き込むかを定義するラスタ操作を表す。これは通常の三項 Rop3 操作の自然な拡張である四項ラスタ操作である。Rop4 には Rop3 の 8 個の定義ビットと類似する 16 個の関連ビットがある(Rop3 の他の冗長ビットは無視される)。Rop4 を実装する最も単純な方法は、その 2 バイトを別々に考えることである。下位バイトはマスクが 1 のときに計算すべき Rop3 を指定する。上位バイトはマスクが 0 のときに計算・適用できる Rop3 を指定する。

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

解説

EngBitBlt 関数は、デバイス管理サーフェス間、またはデバイス管理サーフェスと GDI
管理の標準フォーマットビットマップ間で、汎用ビットブロック転送機能を提供する。

[戻り値]
関数が成功した場合、戻り値は TRUE となる。失敗した場合は FALSE となり、エラーコードがログに記録される。

[備考]
デバイスのサーフェスが標準フォーマットビットマップとして組織されている場合、ドライバは EngBitBlt を呼んで GDI
にビットブロック転送を実行させることができる。ドライバは、単純な転送を高速処理する特殊ハードウェアを持っているが複雑な転送付きの呼び出しは処理したくない場合などにこれを行う。ラスタ操作の詳細は
Microsoft Windows SDK ドキュメントを参照。

情報

プラグイン / モジュール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