<Return[E]><Top>

EnumDisplaySettingsEx

Declare Function Api_EnumDisplaySettingsEx& Lib "user32" Alias "EnumDisplaySettingsEx" (ByVal lpszDeviceName$, ByVal iModeNum&, ByRef lpDevMode As DEVMODE, ByVal dwFlags&)

Declare Function EnumDisplaySettingsEx Lib "user32" (ByVal lpszDeviceName As String, ByVal iModeNum As Long, ByRef lpDevMode As DEVMODE, ByVal dwFlags As Long) As Long

表示デバイスのグラフィックモードの 1 つに関する情報を取得する。この関数を続けて呼び出すと、表示装置のすべてのグラフィックスモードに関する情報が取得できる。
この関数と EnumDisplaySettings 関数との違いは、dwFlags パラメータが追加されている点である。

パラメータ
lpszDeviceName
    グラフィックスモード情報を取得するディスプレイデバイスを示す、NULL で終わる文字列へのポインタを指定する。
    このパラメータには、NULL または DISPLAY_DEVICE を指定することができる。

    DeviceName は EnumDisplayDevices 関数から取得できる。

    NULL 値を指定すると、呼び出し側スレッドが実行されているコンピュータの現在のディスプレイデバイスを取得できる。
    Windows 95:lpszDeviceName パラメータには、NULL を指定する。
iModeNum
    取得する情報の種類を指定する。グラフィックスモードのインデックス、または次のいずれかの値を使う。

    値                                                   

意味                                                                                        

    ENUM_CURRENT_SETTINGS

指定した表示デバイスの現在の設定を取得する。

    ENUM_REGISTRY_SETTINGS

指定した表示デバイスのレジストリに格納されている設定を取得する。

    グラフィックスモードのインデックスは、0 から始まる。表示デバイスのすべてのグラフィックスモードに関する情報を取得するには、

    EnumDisplaySettings 関数を続けて呼び出す。まず、iModeNum パラメータを 0 に設定して最初の呼び出しをする。

    その後、戻り値が 0 になるまで、iModeNum パラメータに 1 ずつ加算して繰り返し呼び出す。
    iModeNum パラメータを 0 に設定して EnumDisplaySettings 関数を呼び出すと、オペレーティングシステムが表示デバイスの情報を

    初期化し、キャッシュに入れます。iModeNum パラメータを 0 以外の値に設定して EnumDisplaySettings 関数を呼び出すと、最後に

    iModeNum パラメータを 0 に設定して呼び出したときにキャッシュされた内容が得られる。
lpDevMode
    指定したグラフィックスモードに関する情報を格納する DEVMODE 構造体へのポインタを指定する。

    EnumDisplaySettings 関数を呼び出す前に、dmSize メンバを sizeof(DEVMODE) に設定し、dmDriverExtra メンバを、専用のドライバ

    データを受け取る追加領域のサイズ(バイト数)に設定しておく。
    EnumDisplaySettings 関数は、次の 5 つの DEVMODE メンバに値を設定する。
        dmBitsPerPel
        dmPelsWidth
        dmPelsHeight
        dmDisplayFlags
        dmDisplayFrequency

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

解説
    IModeNum パラメータの値が、ディスプレイデバイスに前回指定されたグラフィックスモードのインデックスより大きい場合、関数は失敗する。

    iModeNum パラメータの解説でも説明したとおり、この動作を利用してディスプレイデバイスのすべてのグラフィックスモードを列挙することが

    できる。