Поделиться через


Функция EnumDisplaySettingsExA (winuser.h)

Функция EnumDisplaySettingsEx извлекает сведения об одном из графических режимов для устройства отображения. Чтобы получить сведения обо всех графических режимах для устройства отображения, выполните ряд вызовов этой функции.

Эта функция отличается от EnumDisplaySettings тем, что существует параметр dwFlags .

Примечание Приложения, которые вы разрабатываете для Windows 8 и более поздних версий, больше не могут запрашивать или задавать режимы отображения менее 32 бит на пиксель (bpp); эти операции завершатся ошибкой. Эти приложения имеют манифест совместимости, предназначенный для Windows 8. Windows 8 по-прежнему поддерживает 8- и 16-разрядные цветовые режимы для классических приложений, созданных без манифеста Windows 8; Windows 8 эмулирует эти режимы, но по-прежнему работает в 32-разрядном цветовом режиме.
 

Синтаксис

BOOL EnumDisplaySettingsExA(
  [in]  LPCSTR   lpszDeviceName,
  [in]  DWORD    iModeNum,
  [out] DEVMODEA *lpDevMode,
  [in]  DWORD    dwFlags
);

Параметры

[in] lpszDeviceName

Указатель на строку, завершающуюся значением NULL, которая указывает устройство отображения о том, в каком графическом режиме функция будет получать сведения.

Этот параметр имеет значение NULL или DISPLAY_DEVICE. DeviceName возвращается из EnumDisplayDevices. Значение NULL указывает текущее устройство отображения на компьютере, на котором выполняется вызывающий поток.

[in] iModeNum

Указывает тип извлекаемой информации. Это может быть индекс графического режима или одно из следующих значений.

Значение Значение
ENUM_CURRENT_SETTINGS
Получение текущих параметров для устройства отображения.
ENUM_REGISTRY_SETTINGS
Получите параметры для устройства отображения, которые в настоящее время хранятся в реестре.
 

Индексы графического режима начинаются с нуля. Чтобы получить сведения для всех графических режимов устройства отображения, выполните ряд вызовов EnumDisplaySettingsEx следующим образом: установите iModeNum равным нулю для первого вызова и приумножайте iModeNum на единицу для каждого последующего вызова. Продолжайте вызывать функцию, пока возвращаемое значение не равно нулю.

При вызове EnumDisplaySettingsEx с iModeNum, для параметра iModeNum задано значение 0, операционная система инициализирует и кэширует сведения об устройстве отображения. При вызове EnumDisplaySettingsEx с iModeNum, для параметра iModeNum задано ненулевое значение, функция возвращает сведения, которые кэшировались при последнем вызове функции с параметром iModeNum , равным нулю.

[out] lpDevMode

Указатель на структуру DEVMODE , в которую функция хранит сведения о указанном графическом режиме. Перед вызовом EnumDisplaySettingsEx задайте для члена dmSizeзначение sizeof (DEVMODE) и задайте член dmDriverExtra , чтобы указать размер (в байтах) дополнительного пространства, доступного для получения данных частного драйвера.

Функция EnumDisplaySettingsEx заполняет член dmFieldslpDevMode и один или несколько других элементов структуры DEVMODE . Чтобы определить, какие элементы были заданы вызовом EnumDisplaySettingsEx, проверьте битовую маску dmFields . Ниже перечислены некоторые поля, которые обычно заполняются этой функцией:

  • dmBitsPerPel
  • dmPelsWidth
  • dmPelsHeight
  • dmDisplayFlags
  • dmDisplayFrequency
  • dmPosition
  • dmDisplayOrientation

[in] dwFlags

Этот параметр может иметь следующее значение.

Значение Значение
EDS_RAWMODE
Если этот параметр задан, функция возвращает все графические режимы, сообщаемые драйвером адаптера, независимо от возможностей монитора. В противном случае он будет возвращать только те режимы, которые совместимы с текущими мониторами.
EDS_ROTATEDMODE
Если этот параметр задан, функция возвращает графические режимы во всех ориентациях. В противном случае будут возвращены только те режимы, которые имеют ту же ориентацию, что и для запрошенного дисплея.

Возвращаемое значение

Если функция выполняется успешно, возвращается ненулевое значение.

Если функция выполняется неудачно, возвращается нулевое значение.

Комментарии

Функция завершается ошибкой, если iModeNum больше индекса последнего графического режима устройства отображения. Как указано в описании параметра iModeNum , это поведение можно использовать для перечисления всех графических режимов устройства отображения.

Виртуализация DPI

Этот API не участвует в виртуализации DPI. Выходные данные всегда относятся к физическим пикселям и не связаны с вызывающим контекстом.

Примечание

Заголовок winuser.h определяет EnumDisplaySettingsEx в качестве псевдонима, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОД. Сочетание использования псевдонима, не зависящий от кодировки, с кодом, не зависящим от кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header winuser.h (включая Windows.h)
Библиотека User32.lib
DLL User32.dll
Набор API ext-ms-win-ntuser-sysparams-ext-l1-1-1 (представлено в Windows 10, версия 10.0.14393)

См. также раздел

ChangeDisplaySettings

ChangeDisplaySettingsEx

CreateDC

CreateDesktop

DEVMODE

DISPLAY_DEVICE

Функции контекста устройства

Общие сведения о контекстах устройств

EnumDisplayDevices

EnumDisplaySettings