<Return[C]><Top>

CreateDIBSection

Declare Function Api_CreateDIBSection& Lib "gdi32" Alias "CreateDIBSection" (ByVal hDC&, pBitmapInfo As BITMAPINFO, ByVal un&, ByVal lplpVoid&, ByVal handle&, ByVal dw&)

Declare Function CreateDIBSection Lib "gdi32" (ByVal hdc As Long, pBitmapInfo As BITMAPINFO, ByVal un As Long, ByVal lplpVoid As Long, ByVal handle As Long, ByVal dw As Long) As Long

アプリケーションから直接書き込み可能なデバイス独立のビットマップ(DIB)を作成する。この関数は、ビットマップのビット値が置かれている場所へのポインタを返す。

パラメータ
hdc
    デバイスコンテキストのハンドルを指定する。iUsage パラメータが DIB_PAL_COLORS の場合、関数はこのデバイスコンテキストの論理的

    なパレットを使って、DIB の色を初期化する。
pbmi
    DIB のサイズや色情報などさまざまな属性を格納している、1 個の BITMAPINFO 構造体へのポインタを指定する。
iUsage
    pbmi パラメータが指す BITMAPINFO 構造体の bmiColors メンバの配列に含まれるデータの種類(論理パレットインデックスか RGB 値

    か)を指定する。次の値が定義されている。

    値                                

意味                                                                                                                   

    DIB_PAL_COLORS

bmiColors メンバは、hdc パラメータで識別されるデバイスコンテキストの論理パレットに関係する 16 ビットのイン

 

デックス番号。

    DIB_RGB_COLORS

BITMAPINFO 構造体は RGB 値からなる配列を保持している。

ppvBits
    1 個の変数へのポインタを指定する。関数から制御が返ると、この変数に、DIB のビット値が置かれている場所が格納される。
hSection
    DIB を作成するために、関数が使うファイルマッピングオブジェクトのハンドルを指定する。

    このパラメータには NULL を指定することもできる。
    hSection パラメータが NULL ではない場合、PAGE_READWRITE または PAGE_WRITECOPY フラグを指定して

    CreateFileMapping 関数を呼び出して作成したファイルマッピングオブジェクトのハンドルを指定しなければならない。

    読み取り専用の DIB セクションはサポートされていない。

    ほかの方法で作成されたハンドルを指定した場合、CreateDIBSection 関数は失敗する。
    hSection パラメータが NULL ではない場合、CreateDIBSection 関数は hSection パラメータで参照されているファイルマッピング

    オブジェクトのオフセットとして、dwOffset パラメータの値を使い、ビットマップのビット値を取得する。その後、アプリケーションは、

    CreateDIBSection 関数が返した HBITMAP を指定して GetObject 関数を呼び出すと、この hSection ハンドルを取得できる。
    hSection パラメータが NULL の場合、システムは DIB 用のメモリを割り当てる。この場合、CreateDIBSection 関数は dwOfset

    パラメータの値を無視する。その後、アプリケーションはこのメモリのハンドルを取得できない。GetObjet 関数を呼び出した後、 

    DIBSECTION 構造体の dshSection メンバは NULL になる。
dwOffset
    hSection パラメータが参照するファイルマッピングオブジェクト内で、ビットマップのビット値が格納されている領域の開始オフセット値を指定す

    る。hSection パラメータが NULL の場合、この値は無視される。

    ビットマップのビット値はダブルワード境界に整列されているので、dwOffset 値は DWORD 値のサイズ(sizeof(DWORD))の倍数 でなけ

    ればならない。

 
戻り値
    関数が成功すると、新しく作成された DIB のハンドルが返る。そして、*ppvBits は、ビットマップのビット値を指定する。
    関数が失敗すると、NULL が返る。そして、*ppvBits は NULL になる。
    Windows NT/2000:拡張エラー情報を取得するには、GetLastError 関数を使う。