<Return[E]><Top>

EnumDisplayMonitors

Declare Function Api_EnumDisplayMonitors& Lib "user32" Alias "EnumDisplayMonitors" (ByVal hdc&, ByRef lprcClip As Any, ByVal lpfnEnum&, ByVal dwData&)

Declare Function EnumDisplayMonitors Lib "user32" (ByVal hdc As Long, ByRef lprcClip As Any, ByVal lpfnEnum As Long, ByVal dwData As Long) As Long

指定されたクリッピング領域とデバイスコンテキストの可視領域が交差して形成される領域と重なる部分のあるディスプレイモニタを列挙する。

この関数は、該当した各ディスプレイモニタについて 1 度ずつアプリケーション定義のコールバック関数 MonitorEnumProc を呼び出す。

パラメータ
hdc
    目的の可視領域を定義するディスプレイデバイスコンテキストのハンドルを指定する。
    このパラメータに NULL を指定すると、MonitorEnumProc 関数に渡される hdcMonitor パラメータが NULL になり、デスクトップ上のすべ

    てのディスプレイを含む仮想画面が目的の可視領域として使われる。
lprcClip
    クリッピング領域を定義する RECT 構造体へのポインタを指定する。このクリッピング領域と hdc パラメータで指定した可視領域との交差領

    域が、各ディスプレイモニタと重なるかどうか判定される。
    hdc パラメータに NULL 以外の値を指定した場合、クリッピング領域の座標は hdc パラメータで指定した可視領域の原点に対する相対座

    標となる。hdc パラメータに NULL を指定した場合は、仮想画面の座標系が使われる。
    hdc パラメータで指定した領域を一切クリッピングない場合、このパラメータに NULL を指定する。
lpfnEnum
    アプリケーション定義のコールバック関数 MonitorEnumProc へのポインタを指定する。
dwData
    アプリケーション定義のデータを指定する。このデータは、EnumDisplayMonitors 関数から MonitorEnumProc 関数にそのまま渡される。

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

解説
    EnumDisplayMonitors 関数を呼び出す状況としては、主に次の 2 つがある。
    モニタごとにカラー形式が異なるシステムで、複数のモニタにまたがるデバイスコンテキストに対して最適な描画を行う場合。
    1 台以上のディスプレイモニタのハンドルとその長方形領域の位置を取得する場合。
    現在のシステムにあるすべてのディスプレイモニタが同じカラー形式を採用しているかどうかを調べるには、SM_SAMEDISPLAYFORMAT を

    指定して GetSystemMetrics 関数を呼び出す。
    1 つの“ウィンドウ”が異なるカラー形式を持つ複数のディスプレイモニタにまたがっている場合は、必ずしも EnumDisplayMonitors 関数を使う

    必要はない。

    ウィンドウの場合は、画面全体がプライマリモニタと同じカラープロパティを持つものとして描画処理を行っても正常に表示される。ただし、

    EnumDisplayMonitors 関数を使うと見栄えをよりよくすることが可能になる。
    hdc パラメータに NULL を指定して EnumDisplayMonitors 関数を呼び出すと、1 台以上のディスプレイモニタのハンドルとその長方形領

    域の位置を取得することができる。次の表は、パラメータ hdc と lprcClip に NULL を指定した場合と NULL 以外の値を指定した場合

    の 4 とおりのケースについて、EnumDisplayMonitors 関数の動作をまとめたものである。

    hdc                    

lprcRect             

EnumDisplayMonitors 関数の処理内容                                                             

    NULL

NULL

すべてのディスプレイモニタを列挙する。
コールバック関数に渡される HDC は NULL になる。

    NULL

 

NULL 以外の値

 

クリッピング領域と重なる部分のあるディスプレイモニタだけを列挙する。クリッピング領域には、仮想

画面の座標系が使われる。

コールバック関数に渡される HDC は NULL になる。

    NULL 以外の値

NULL

デバイスコンテキストの可視領域と重なる部分のあるディスプレイモニタだけを列挙する。
コールバック関数には、特定のディスプレイモニタのデバイスコンテキストハンドルが渡される。

    NULL 以外の値

NULL 以外の値

デバイスコンテキストの可視領域とクリッピング領域との交差部分と重なる部分のあるディスプレイモニ

タだけを列挙する。クリッピング領域には、デバイスコンテキストの座標系が使われる。
コールバック関数には、特定のディスプレイモニタのデバイスコンテキストハンドルが渡される。