<Return[C]><Top>

CreateBitmapIndirect

Declare Function Api_CreateBitmapIndirect& Lib "gdi32" Alias "CreateBitmapIndirect" (lpBitmap As BITMAP)

Declare Function CreateBitmapIndirect Lib "gdi32" Alias "CreateBitmapIndirect" (lpBitmap As BITMAP) As Long

指定された幅、高さ、色形式(カラープレーンと 1 ピクセル当たりの色数)を持つビットマップを作成する。モノクロームビットマップの作成に使う。

パラメータ
lpbm
    ビットマップの情報を保持している 1 個の 構造体へのポインタを指定する。BITMAP 構造体の bmWidth メンバまたは bmHeight メンバに
    0 を指定した場合、CreateBitmapIndirect 関数は 1×1 ピクセルのモノクロームビットマップを作成し、そのハンドルを返す。

戻り値
    関数が成功すると、ビットマップのハンドルが返る。
    関数が失敗すると、NULL が返る。
    Windows NT/2000:拡張エラー情報を取得するには、 関数を使う。

解説
    ビットマップを作成した後、SelectObject 関数を使って、デバイスコンテキストでそのビットマップを選択できる。
    CreateBitmapIndirect 関数は、カラーのビットマップを作成する目的でも利用できる。しかし、パフォーマンス上の理由で、

    CreateBitmapIndirect はモノクロームのビットマップを作成する場合にのみ使い、カラーのビットマップを作成する場合は、

    CreateCompatibleBitmap 関数を使うべきである。CreateBitmapIndirect が返したカラーのビットマップをデバイスコンテキストで選択する場

    合、システムはそのビットマップが、そのデバイスコンテキストの形式に一致していると保証しなければならない。一方、

    CreateCompatibleBitmap は引数としてデバイスコンテキストを受け取るので、指定されたデバイスコンテキストと同じ形式を持つビットマップ

    を返す。この理由により、CreateBitmapIndirect が返したカラーのビットマップに対して、それ以降 SelectObject を呼び出す場合よりも、   

    CreateCompatibleBitmap を使って同等の処理を行う方が高速になる。
    ビットマップがモノクロームの場合、作成されたデバイスコンテキストで、0 は前景色、1 は背景色を表す。
    ビットマップが不要になったら、DeleteObject 関数を呼び出して削除する。
    Windows 95/98:作成できるビットマップのサイズは、最大 16MB である。