c++ - 获取所有支持的屏幕分辨率

标签 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 等。

请问有没有人可以提供帮助和建议? 谢谢!

最佳答案

您的代码运行良好。关于你的两个问题:

  1. 有多种具有相同分辨率的显示模式。它们可能在颜色深度、频率或隔行扫描等其他方面有所不同。
  2. Windows GUI 根本不允许您将分辨率或颜色深度设置为低于特定值。对于 Windows '9x,它是 640x480 和 16 色。现在是 800x600。这仅仅是因为 Windows 用户界面在一定尺寸以下无法工作。您甚至看不到询问该解决方案是否有效的消息!此外,GUI 可能只会返回与您的显示器的纵横比相匹配的分辨率。

编辑:“频率”是指“刷新率”

关于c++ - 获取所有支持的屏幕分辨率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24913268/

相关文章:

c++ - C c(3); 有什么区别?和 C c{3};实例化一个类时?

c++ - 在 QtCreator 中链接/使用外部库

winapi - 如何在 Inno Setup 中捕获 OleObject 异常?

c++ - 如何确定进程是 32 位还是 64 位?

html - 缩放和分辨率

c++ - Reader/Writer : multiple heavy readers, 每天只写 1 次

c++ - 无法使用 IOCP 正确接受新连接 - 套接字句柄无效

c++ - 在启动特定子进程后挂起进程

ios - iPhone @2x 在 Sketch 中的设计问题

python - 以编程方式更改窗口分辨率