EngCreateBitmap 関数 (winddi.h)

EngCreateBitmap 関数は、GDI がビットマップを作成および管理することを要求します。

構文

ENGAPI HBITMAP EngCreateBitmap(
       SIZEL sizl,
       LONG  lWidth,
  [in] ULONG iFormat,
  [in] FLONG fl,
  [in] PVOID pvBits
);

パラメーター

sizl

作成するビットマップの幅と高さをピクセル単位でメンバーに含む SIZEL 構造体を指定します。 SIZEL 構造体は SIZE 構造体と 同じです。

pvBitsNULL でない場合、この値はデバイスに表示されているすべてのピクセルを表し、デバイスが画面外のメモリを保持できるようにします。

lWidth

ビットマップの割り当て幅を指定します。これは、1 つのスキャン行を下に移動するためにポインターに追加する必要があるバイト数です。

[in] iFormat

必要なピクセルあたりの色情報のビット数の観点からビットマップの形式を指定します。 このパラメーターには、次のいずれかの値を指定できます。

説明
BMF_1BPP 白黒
BMF_4BPP ピクセルあたり 4 ビット
BMF_8BPP ピクセルあたり 8 ビット
BMF_16BPP ピクセルあたり 16 ビット
BMF_24BPP 1 ピクセルあたり 24 ビット
BMF_32BPP ピクセルあたり 32 ビット
BMF_4RLE ピクセルあたり 4 ビット。エンコードされた実行長
BMF_8RLE ピクセルあたり 8 ビット。エンコードされた実行長

[in] fl

作成するビットマップに関するプロパティを指定するビットマスクです。 このパラメーターには、0 または次の値の任意の組み合わせを指定できます。

説明
BMF_NOZEROINIT GDI は、割り当て時にビットマップをゼロ初期化しません。 このフラグは、 pvBitsNULL の場合にのみチェックされます。
BMF_TOPDOWN 最初のスキャン行は、ビットマップの上部を表します。 既定では、標準形式のビットマップの下部に最初のスキャン行があることに注意してください。
BMF_USERMEM GDI は、ユーザー メモリからビットマップのメモリを割り当てます。 既定では、メモリはカーネルのアドレス空間から割り当てられます。 このフラグは、作成されるビットマップが他のプロセスで使用されない場合にのみ指定する必要があります。 プリンター ドライバーによってユーザー メモリを EngWritePrinter に渡すことはできません。

[in] pvBits

作成するビットマップの最初のスキャン行へのポインター。 このパラメーターが NULL の場合、GDI はビットマップのピクセルの記憶域を割り当てます。 pvBitsNULL でない場合は、ビットマップのバッファーへのポインターです。

戻り値

関数が正常に完了した場合、戻り値は作成されたビットマップを識別するハンドルです。 それ以外の場合、戻り値は 0 です。 EngCreateBitmap はエラー コードをログに記録しません。

解説

ビットマップのストレージは、必要に応じてドライバーによって提供できます。

ドライバーは、DrvEnableSurface から戻る前に EngAssociateSurface を呼び出して、作成したビットマップをサーフェスとして関連付ける必要があります。

必要なくなったら、 EngDeleteSurface を使用してビットマップを削除する必要があります。

フレーム バッファー ディスプレイ ドライバーでは pvBits パラメーターを使用する必要があります。これにより、GDI はほとんどの描画をディスプレイに直接実行できます。

要件

   
サポートされている最小のクライアント Windows 2000 以降のバージョンの Windows オペレーティング システムで使用できます。
対象プラットフォーム ユニバーサル
Header winddi.h (Winddi.h を含む)
Library Win32k.lib
[DLL] Win32k.sys

関連項目

DrvCreateDeviceBitmap

EngAllocUserMem