<Return[G]><Top>

GetDCEx

Declare Function Api_GetDCEx& Lib "user32" Alias "GetDCEx" (ByVal hWnd&, ByVal hrgnclip&, ByVal fdwOptions&)

Declare Function GetDCEx Lib "user32" (ByVal hwnd As Long, ByVal hrgnclip As Long, ByVal fdwOptions As Long) As Long

指定されたウィンドウのクライアント領域または画面全体を表すディスプレイデバイスコンテキストのハンドルを取得する。その後、GDI 関数を使って、返されたデバイスコンテキスト内で描画を行える。

パラメータ
hWnd
    デバイスコンテキストの取得対象となるウィンドウのハンドルを指定する。

    NULL を指定すると、GetDCEx は画面全体を表すデバイスコンテキストを取得する。
    Windows 98 と Windows 2000:NULL を指定すると、GetDC はプライマリモニタのデバイスコンテキストを取得する。

    他のモニタのデバイスコンテキストを取得するには、EnumDisplayMonitors と CreateDC の各関数を使う。
hrgnClip
    クリッピングリージョンを指定する。このクリッピングリージョンを、デバイスコンテキストの可視リージョンと組み合わせることもできる。

    flags パラメータで DCX_INTERSECTRGN または DCX_EXCLUDERGN を指定した場合、オペレーティングシステムはこのクリッピングリ

    ージョンの所有権を取得し、必要がなくなった段階で自動的に削除する。

    この場合、GetDCEx の呼び出しに成功した後は、アプリケーションはこのクリッピングリージョンを使うべきではなく、削除すべきでもない。
flags
    デバイスコンテキストの作成方法を指定する。次の値の任意の組み合わせを指定する。

    値                                             

意味                                                                                                                          

    DCX_WINDOW

クライアント領域内の長方形ではなく、ウィンドウ全体の長方形を表すデバイスコンテキストを取得する。

    DCX_CACHE

OWNDC や CLASSDC に対応するウィンドウからではなく、キャッシュからデバイスコンテキスト、

 

つまりオペレーティングシステムが所有している内部のデバイスコンテキスト)を取得する。

 

この値を指定すると、事実上、CS_OWNDC と CS_CLASSDC が無効になる。

    DCX_PARENTCLIP

親ウィンドウの可視リージョンを使う。親ウィンドウの WS_CLIPCHILDREN スタイルや

 

CS_PARENTDC スタイルを無視する。デバイスコンテキストの原点は、hWnd パラメータで指定された

 

ウィンドウの左上隅に設定される。

    DCX_CLIPSIBLINGS

クリッピングリージョンから、hWnd パラメータで指定されたウィンドウより前面(奥行き方向の手前)

 

にあるすべての兄弟ウィンドウの可視リージョンを除外する。

    DCX_CLIPCHILDREN

クリッピング領域から、hWnd パラメータで指定されたウィンドウより背面(奥行き方向の奥)にあるす

 

べての子ウィンドウの可視リージョンを除外する。

    DCX_NORESETATTRS

このデバイスコンテキストを解放する際に、属性を既定値へ戻さない。

    DCX_LOCKWINDOWUPDATE

LockWindowUpdate 関数を呼び出した結果、ウィンドウのロックが有効になっている場合でも描画を可

 

能にする。本来なら、このウィンドウへの描画を行えない。トラッキング中に描画を行う場合に、この値

 

を使う。

    DCX_EXCLUDERGN

デバイスコンテキストの可視リージョンから、hrgnClip パラメータで指定されたクリッピングリージョンを除

 

外する。

    DCX_INTERSECTRGN

デバイスコンテキストの可視リージョンと、hrgnClip パラメータで指定されたクリッピングリージョンの共通

 

部分を、新しいクリッピングリージョンとする。

    DCX_VALIDATE

DCX_INTERSECTUPDATE と DCX_VALIDATE の両方を指定すると、デバイスコンテキストが完

 

全に有効になる。これらの値を指定してこの関数を呼び出すと、BeginPaint 関数を呼び出したのと同

 

じ結果になる。


戻り値
    関数が成功すると、指定されたウィンドウに関連するデバイスコンテキストのハンドルが返る。
    関数が失敗すると、NULL が返る。hWnd パラメータで無効な値を指定すると、関数は失敗する。
    Windows NT/2000:拡張エラー情報を取得するには、GetLastError 関数を使う。

解説
    デバイスコンテキストが不要になったら、ReleaseDC 関数を呼び出して解放する。

    ただし、ウィンドウクラスに属しているディスプレイデバイスコンテキストは、解放する必要がない。

    一度に使える共通デバイスコンテキストは最大 5 つなので、共通デバイスコンテキストを解放しないと、他のアプリケーションが共通デバイス

    コンテキストにアクセスできなくなることがある。
    ウィンドウクラスを登録したときに、WNDCLASS 構造体で CS_CLASSDC、CS_OWNDC、CS_PARENTDC のいずれかのスタイルを指

    定していた場合、この関数は、ウィンドウクラスに所属するデバイスコンテキストのハンドルを返す。