<Return[MN]><Top>

MaskBlt

Declare Function Api_MaskBlt& Lib "gdi32" Alias "MaskBlt" (ByVal hdcDest&, ByVal nXDest&, ByVal nYDest&, ByVal nWidth&, ByVal nHeight&, ByVal hdcSrc&, ByVal nXSrc&, ByVal nYSrc&, ByVal hbmMask&, ByVal xMask&, ByVal yMask&, ByVal dwRop&)

Declare Function MaskBlt Lib "gdi32" Alias "MaskBlt" (ByVal hdcDest As Long, ByVal nXDest As Long, ByVal nYDest As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hdcSrc As Long, ByVal nXSrc As Long, ByVal nYSrc As Long, ByVal hbmMask As Long, ByVal xMask As Long, ByVal yMask As Long, ByVal dwRop As Long) As Long

指定されたマスクとラスタオペレーションを使って、結合元と結合先の各ビットマップの色データを組み合わせる。

パラメータ
hdcDest
    結合先のデバイスコンテキストのハンドルを指定する。
nXDest
    結合先長方形の左上隅の論理 x 座標を指定する。
nYDest
    結合先長方形の左上隅の論理 y 座標を指定する。
nWidth
    結合先長方形と結合元ビットマップの幅を論理単位で指定する。
nHeight
    結合先長方形と結合元ビットマップの高さを論理単位で指定する。
hdcSrc
    ビットマップのコピー元になるデバイスコンテキストのハンドルを指定する。dwRop パラメータが、結合元ビットマップを含まないラスタオペレーシ

    ョンを指定している場合、hdcSrc パラメータには 0 を指定しなければならない。
nXSrc
    結合元ビットマップの左上隅の論理 x 座標を指定する。
nYSrc
    結合元ビットマップの左上隅の論理y座標を指定する。
hbmMask
    結合元デバイスコンテキストのカラービットマップと組み合わされる、モノクロームのマスクビットマップのハンドルを指定する。
xMask
    hbmMask パラメータで指定されたマスクビットマップの、水平方向のピクセルオフセットを指定する。
yMask
    hbmMask パラメータで指定されたマスクビットマップの、垂直方向のピクセルオフセットを指定する。
dwRop
    フォアグラウンドとバックグラウンドそれぞれの 3 項ラスタオペレーションコードを指定する。MaskBlt 関数はこのコードを使って、結合元データ

    と結合先データの組み合わせを制御する。バックグラウンドのラスタオペレーションコードを、この値の上位ワード(high-order word)の上位

    バイト(high-order byte)に指定する。フォアグラウンドのラスタオペレーションコードは、この値の上位ワードの下位バイト(low-order

    byte)に指定する。この値の下位ワード(low-order word)は無視されますが、0 を指定するべきである。 マクロは、このようなフォアグラ

    ウンドとバックグラウンドのラスタオペレーションコードの組み合わせを作成する。

戻り値
    関数が成功すると、0 以外の値が返る。
    関数が失敗すると、0 が返る。
    Windows NT/2000:拡張エラー情報を取得するには、 関数を使う。

 

解説
    hbmMask パラメータで指定されたマスクの 1 という値は、dwRop パラメータで指定されたフォアグラウンドのラスタオペレーションコードをその

    位置に適用することを示す。マスクの 0 という値は、dwRop パラメータで指定されたバックグラウンドのラスタオペレーションコードをその位置

    に適用することを示す。
    ラスタオペレーションが結合元ビットマップを必要とする場合、マスクの長方形は結合元長方形を覆っている必要がある。それ以外の場合、

    この関数は失敗する。ラスタオペレーションが結合元を必要としない場合、マスクの長方形は結合先長方形を覆っている必要がある。それ

    以外の場合、この関数は失敗する。
    MaskBlt 関数を呼び出したときに、結合元のデバイスコンテキストで回転や傾斜のような変形が有効になっている場合、エラーになる。ただ

    し、他のタイプの変形ではエラーにはならない。
    結合元ビットマップ、パターンビットマップ、結合先ビットマップのいずれかの色形式が異なっている場合、この関数は結合先の形式に合わ

    せて、パターンと結合元の一方または両方を変換する。
    マスクビットマップがモノクロームビットマックでない場合、エラーになる。
    拡張メタファイルを記録する際に、結合元のデバイスコンテキストで拡張メタファイルのデバイスコンテキストを指定していると、エラーが発生す

    る(関数は FALSE、つまり 0 を返す)。
    すべてのデバイスが MaskBlt 関数をサポートしているわけではない。アプリケーションは、 GetDeviceCaps 関数を呼び出して、デバイスが

    この関数をサポートしているかどうかを調べるべきである。
    マスクビットマップを指定しなかった場合、この関数はフォアグラウンドのラスタオペレーションコードを使って、 BitBlt 関数とまったく同じ動作

    をする。
    ICM:ブリット(ブロック転送)を行うときに、色の管理は実施されない。
    Windows 98 と Windows 2000:マルチモニタシステムを使っている場合、hdcSrc と hdcDest は同じデバイスを指していなければならない。 

    それ以外の場合、この関数は失敗する