4-7-2007 07:39
dingzhigang
マルチモニタAPIを使用するときによく発生するエラー
Windowsにおいて、GetMonitorInfoやMonitorFromPointなどのマルチモニタAPIを使用するときによく発生するエラーと、その対処法を紹介します。
スクリーン上の座標x,yが属するモニタの情報を取得するため、以下のようなコードを書いたとします。
POINT Point = {x, y};
MONITORINFO MonitorInfo;
HMONITOR MonitorHandle = ::MonitorFromPoint(Point, MONITOR_DEFAULTTOPRIMARY);
MonitorInfo.cbSize = sizeof(MonitorInfo);
::GetMonitorInfo(MonitorHandle, &MonitorInfo);
特に変哲のない普通にコードですが、これだけのコードでもコンパイルエラーやリンクエラーに悩まされます。
最初に出会うのがこのコンパイルエラーです。
error C2065: 'MONITORINFO' : 定義されていない識別子です。
MOINTERINFOの説明(MSDN)を読むと、windows.hをインクルードするだけで良い様に思えますが、どうやらmultimon.hというヘッダファイルをインクルードする必要があるようです。