![]() |
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のサイズを設定します。