SDK-MFC 備忘録 |
Windows SDKやMFCに関するメモです。
(記載内容について正しいことを保証するものではありません。MSDN等で確認してください)
2009/10/1 作成
2010/1/23 MONITORINFOF_PRIMARY,MONITORINFOEXについて追記
マルチモニタの情報取得に関するメモです。
1)情報取得方法
マルチモニタの情報を取得するには、列挙タイプのAPIで取得します。
例)
BOOL CALLBACK MonitorEnumProc(HMONITOR hMonitor,HDC hdc,LPRECT,lprcMonitor,LPARAM dwData) { MONITORINFO mi; mi.cbSize = sizeof(mi); GetMonitorInfo(hMonitor, &mi); //(略) return TRUE;//継続 } //ディスプレイの情報を取得する VOID getMultiDisplayInfo() { EnumDisplayMonitors( NULL, /* デバイスコンテキストのハンドル */ NULL, /* クリッピング領域のポインタ */ (MONITORENUMPROC)MonitorEnumProc, /* コールバック関数のポインタ */
(LPARAM)0); /* 関数に渡されるパラメータ */
} MONITORINFOの構成は、 typedef struct tagMONITORINFO { DWORD cbSize; RECT rcMonitor; RECT rcWork; DWORD dwFlags; } MONITORINFO, *LPMONITORINFO;
rcMonitorはディスプレイのサイズ,rcWorkはタスクバーを除いたディスプレイサイズ、swFlagsはMONITORINFOF_PRIMARY(1)の場合プライマリディスプレイを示します。
MONITORINFOの代わりにMONITORINFOEXを使用するとデバイス名が取得できます。この場合cbSizeにはMONITORINFOEXのサイズを設定します。