モニタはWindowsでワイドスクリーンされているかどうかを検出する方法

StackOverflow https://stackoverflow.com/questions/1478003

質問

私は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を試してみてください。

賢明なことは、高さの割合に幅でモニターを分類することです。それは私がゲームの多くは、これらの日をやって見たものです。

あなたが幅を得ることができる場合は、

、あなたはおそらく、高さを得ることができます。その後、答えは一つだけ少し数学の操作距離にあります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top