获得所有支持的屏幕分辨率

时间:2014-07-23 14:29:34

标签: c++ winapi screen-resolution

我正在寻找获得所有支持解决方案的方法。

在这里搜索了一些解决方案后,我得到了这段代码:

#include "Windows.h"
#include <Windows.h>
#include <iostream>


using namespace std;

int main()
{
    DEVMODE dm = { 0 };
    dm.dmSize = sizeof(dm);
    for( int iModeNum = 0; EnumDisplaySettings( NULL, iModeNum, &dm ) != 0; iModeNum++      ) 
    {
       cout << "Mode #" << iModeNum << " = " << dm.dmPelsWidth << "x" << dm.dmPelsHeight << endl;
     }
 int age;
 cin>>age;

}

我对此代码有两个问题:

  1. 运行时,我会一遍又一遍地获得相同的分辨率。 例如:Mode0,Mode1,Mode2 ..... Mode17全部为:320x200

  2. 使用Gui并查看可用的分辨率时,我没有选择320x200。我看到我的电脑支持600x800和更高版本,但在运行这个小exe时我也看到了400x300,320x240等。

  3. 有人可以提供帮助和建议吗? 谢谢!

1 个答案:

答案 0 :(得分:3)

您的代码运行正常。关于你的两个问题:

  1. 有多种显示模式具有相同的分辨率。它们可能在颜色深度,频率或隔行扫描等其他方面有所不同。
  2. Windows GUI根本不允许您将分辨率或颜色深度设置为低于一定量。使用Windows 9x,它是640x480和16种颜色。现在是800x600。这仅仅是因为Windows UI在特定大小以下不起作用。您甚至无法看到询问分辨率是否有效的消息!此外,GUI可能只返回与您的显示器的宽高比匹配的分辨率。
  3. 编辑:“频率”是指“刷新率”