如何检测显示器是否运行在Windows宽屏
-
16-09-2019 - |
题
我需要一种方法来编程检测显示器是否是宽的或没有,在Windows中。
GetSystemMetrics的返回桌面,哪种类型的作品的尺寸,但如果用户有在,比方说,1024×768的宽屏显示器,我会错误地把它归类为不宽。
GetDeviceCaps具有HORZRES和VERTRES,甚至HORZSIZE AND VERTSIZE当非宽分辨率在宽显示屏可用于得到不正确的结果。类似的问题
是否有任何方法来检测这种可靠?
解决方案
您也许能够打通 EDID 实际物理尺寸。在这里看到:如何获取正确的显示器的物理尺寸?
其他提示
下面是一种更好的版本不乱用EDID或注册表。它使得假设(其IMHO相当精确)由显示支持的最大分辨率是最好的天然配合。
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