<Return[UV]><Top>

UpdateLayeredWindow

Declare Function Api_UpdateLayeredWindow& Lib "user32" Alias "UpdateLayeredWindow" (ByVal hWnd&, ByVal hdcDst&, ByRef pptDst As POINT, ByRef psize As SIZE, ByVal hdcSrc&, ByRef pptSrc As POINT, ByVal crKey&, ByRef pblend As BLENDFUNCTION, ByVal dwFlags&)

Declare Function UpdateLayeredWindow Lib "user32" Alias "UpdateLayeredWindow" (ByVal hWnd As Long, ByVal hdcDst As Long, ByRef pptDst As POINT, ByRef psize As SIZE, ByVal hdcSrc As Long, ByRef pptSrc As POINT, ByVal crKey As Long, ByRef pblend As BLENDFUNCTION, ByVal dwFlags As Long) As Long

レイヤードウィンドウの位置、サイズ、形、内容、透明度を更新する。

パラメータ
hwnd
    レイヤードウィンドウのハンドルを指定する。CreateWindowEx 関数を使ってウィンドウを作成するとき、WS_EX_LAYERED フラグをセットす

    ると、作成されるウィンドウはレイヤードウィンドウになる。
hdcDst
    画面のデバイスコンテキスト(DC)のハンドルを指定する。このハンドルは、 関数を呼び出すときに NULL を指定することによって得られ

    る。このハンドルは、ウィンドウの内容を更新するときパレットのカラーマッチングに使われる。このパラメータに NULL を指定すると、既定の

    パレットが使われる。
    hdcSrc に NULL を指定するときは、このパラメータも NULL でなければならない。
pptDst
    レイヤードウィンドウの新しい画面位置が入った 構造体へのポインタを指定する。現在の位置を変更しないときは、NULL を指定できる。
psize
    レイヤードウィンドウの新しいサイズが入った 構造体へのポインタを指定する。ウィンドウのサイズを変更しないときは、NULL を指定する。
    hdcSrc に NULL を指定するときは、このパラメータも NULL でなければならない。
hdcSrc
    レイヤードウィンドウを定義するサーフェスの DC のハンドルを指定する。このハンドルは、 関数または IDirectDrawSurface4::GetDCメソッド

    を使って取得できる。ウィンドウの形と視覚的な属性を変更しないときは、NULL を指定できる。
pptSrc
    デバイスコンテキストにおけるレイヤの位置が入った 構造体へのポインタを指定する。
    hdcSrc に NULL を指定するときは、このパラメータも NULL でなければならない。
crKey
    レイヤードウィンドウを構成するときに使うカラーキーが入った 構造体へのポインタを指定する。
pblend
    レイヤードウィンドウを構成するときに使う透明度の値が入った 構造体へのポインタを指定する。
dwFlags
    次のいずれかのフラグをセットする。

    フラグ                        

意味                                                                                                                                              

    ULW_ALPHA

 

pblend をブレンド機能として使う。ディスプレイモードが 256 色以下の場合は、ULW_OPAQUE フラグをセットした

場合と同じ効果になる。

    ULW_COLORKEY

crKey を透明色として使う。

    ULW_OPAQUE

不透明なレイヤードウィンドウを描画する。

    hdcSrc に NULL を指定するときは、dwFlags に 0 を指定する。

 

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

解説
    更新前の DC には、レイヤードウィンドウの可視の内容を定義するサーフェスが含まれていなければならない。たとえば、 関数で取得したデ

    バイスコンテキスト用にビットマップを選択できる。
    UpdateLayeredWindow 関数を呼び出しても、画面上でのウィンドウの外見は変わらない。UpdateLayeredWindow 関数を呼び出したため

    に現れる、レイヤーウィンドウの下のウィンドウは再描画する必要はない。システムによって再描画されるためである。そのため、レイヤードウ

    ィンドウのシームレスなアニメーションが可能である。
    レイヤードウィンドウとその下にあるウィンドウの最高の描画パフォーマンスを得るには、レイヤードウィンドウをできるだけ小さくする必要があ

    る。また、 メッセージを処理することによって、ディスプレイの色の濃さが変化したときレイヤードウィンドウを作り直す必要がある。