我需要一种方法来编程检测显示器是否是宽的或没有,在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

在明智的做法将是由宽度与高度比例进行分类监视器。这就是我看到了很多的游戏做的这些日子。

如果你能得到的宽度,那么你就可以得到大概的高度。在此之后,答案只有一个小的数学运算的路程。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top