Получение всех поддерживаемых разрешений экрана

Я ищу способ получить все поддерживаемые разрешения.

После поиска здесь некоторых решений я получил этот код работающим:

#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;

}

У меня есть 2 проблемы с этим кодом:

  1. При запуске я получаю одно и то же разрешение снова и снова.
    Например: Mode0, Mode1, Mode2 ….. Mode17 все: 320×200

  2. При использовании графического интерфейса и просмотре доступных разрешений у меня нет опции 320×200. Я вижу, что мой компьютер поддерживает 600×800 и выше, но при запуске этого небольшого exe я также вижу 400×300, 320×240 и т. Д.

Может кто-нибудь помочь и посоветовать, пожалуйста?
Спасибо!

2

Решение

Ваш код работает отлично. По поводу ваших 2 проблем:

  1. Существует несколько режимов отображения с одинаковым разрешением. Они могут отличаться другими способами, такими как глубина цвета, частота или чередование.
  2. Windows GUI просто никогда не позволяет вам устанавливать разрешение или глубину цвета ниже определенного значения. В Windows 9x это было 640×480 и 16 цветов. Теперь это 800х600. Это просто потому, что пользовательский интерфейс Windows не работает ниже определенного размера. Вы даже не сможете увидеть сообщение с вопросом, сработало ли разрешение! Кроме того, графический интерфейс может возвращать только те разрешения, которые соответствуют соотношению сторон вашего монитора.

РЕДАКТИРОВАТЬ: под «частотой» мы подразумеваем «частоту обновления»

3

Другие решения


По вопросам рекламы [email protected]