Win32でデスクトップ全体(マルチモニタ環境の場合、すべてつなげた仮想デスクトップ全体)の縦横サイズを取得しようとしています。
GetSystemMetrics()で取得できることはわかっていますが、このAPIには若干不満があります。
縦サイズと横サイズ、それに色深度を取るのに3回呼び出さねばならず、このコールの間にビデオモードが変更される可能性がある、つまりトランザクショナルでなく、まあ本当に微小な確率ですが不正確な値のセットを取得してしまう可能性があるからです。
GetDC(NULL)でデスクトップ全体のデバイスコンテキストを取得し、さらにそれをCreateCompatibleDC()に渡して同サイズ・同色深度のメモリデバイスコンテキストを作成、これのサイズと色深度をGetDeviceCaps()で取得すればトランザクショナルではないか、と思い立ちやってみたところ、どうしてもプライマリディスプレイのサイズが取れてしまいます。
GetDC(NULL)で取れた生のデバイスコンテキストからGetDeviceCaps()で取得してもやはりプライマリディスプレイのサイズが出てきます。
GetDeviceCaps()の引数としてDESKTOPHORZRESを指定してもHORZRESも同じです。
これはどうしたことでしょうか? また、どうしたら所期の目的が果たせるでしょうか?

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。