モニタはWindowsでワイドスクリーンされているかどうかを検出する方法
-
16-09-2019 - |
質問
私はWindowsで、プログラム的にモニターが広いかどうかを検出する方法が必要になります。
GetSystemMetrics関数は、デスクトップ、作品の種類のサイズを返しますが、ユーザーは1024×768、たとえば、のワイドスクリーンモニタを持っている場合、私は間違って非ワイドとして、それを分類します。
GetDeviceCapsを非ワイド解像度はワイドモニターで使用されるときHORZRESとVERTRES、とさえHORZSIZEとVERTSIZEと同様の問題は、誤った結果が得られています。
確実にこれを検出する方法はありますか?
解決
あなたは EDID を通じ、実際の物理的なサイズを取得することができるかもしれません。ここを参照してください:正しいを入手する方法モニターの物理的な大きさですか
他のヒント
ここでEDIDまたはレジストリを台無しにしないより良いバージョンです。これは、ディスプレイがサポートする最大解像度は最高のネイティブ適合していること(私見非常に正確である)の仮定を行います。
DEVMODEA modeInfo;
modeInfo.dmSize = sizeof(DEVMODEA);
modeInfo.dmDriverExtra = NULL;
int modeNum = 0;
int xMax = 0, yMax = 0;
while (EnumDisplaySettingsExA(0, modeNum, &modeInfo, 0)) {
++modeNum;
if (modeInfo.dmPelsWidth > xMax) {
xMax = modeInfo.dmPelsWidth;
yMax = modeInfo.dmPelsHeight;
}
}
cout << "Monitor aspect ratio : " << (double)xMax/yMax << "\n";
乾杯ます。
SystemInformation.PrimaryMonitorSizeを試してみてください。
賢明なことは、高さの割合に幅でモニターを分類することです。それは私がゲームの多くは、これらの日をやって見たものです。
あなたが幅を得ることができる場合は、、あなたはおそらく、高さを得ることができます。その後、答えは一つだけ少し数学の操作距離にあります。
所属していません StackOverflow