我正在寻找一种方法来获得所有支持的分辨率。
在这里搜索了一些解决方案后,我得到了这段代码:
#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;
这段代码有两个问题:
运行它时,我一遍又一遍地得到相同的分辨率。 例如:Mode0, Mode1, Mode2..... Mode17 都是:320x200
在使用 Gui 并查看可用分辨率时,我没有 320x200 作为选项。我看到我的电脑支持 600x800 及以上,但是当运行这个小 exe 时我也看到 400x300、320x240 等。
请问有没有人可以提供帮助和建议? 谢谢!
最佳答案
您的代码运行良好。关于你的两个问题:
- 有多种具有相同分辨率的显示模式。它们可能在颜色深度、频率或隔行扫描等其他方面有所不同。
- Windows GUI 根本不允许您将分辨率或颜色深度设置为低于特定值。对于 Windows '9x,它是 640x480 和 16 色。现在是 800x600。这仅仅是因为 Windows 用户界面在一定尺寸以下无法工作。您甚至看不到询问该解决方案是否有效的消息!此外,GUI 可能只会返回与您的显示器的纵横比相匹配的分辨率。
编辑:“频率”是指“刷新率”
关于c++ - 获取所有支持的屏幕分辨率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24913268/