Функция ChangeDisplaySettingsEx


Функция ChangeDisplaySettingsEx изменяет  параметры настройки определяемого устройства отображения в заданном графическом режиме.

Синтаксис

LONG ChangeDisplaySettingsEx(
  LPCTSTR lpszDeviceName,  // название устройства отображения
  LPDEVMODE lpDevMode,     // графический режим
  HWND hwnd,               // не используется; должно быть ПУСТО (NULL)
  DWORD dwflags,           // параметры графического режима
  LPVOID lParam            // видеопараметры (или ПУСТО (NULL))
);

Параметры

lpszDeviceName

[in] Указатель на символьную строку с нулем в конце, которая определяет устройство отображения, графический режим которого изменится. Допустимы только названия устройств отображения, которые возвращаются функцией EnumDisplayDevices. Дополнительную информацию о названиях, связанных с этими устройствами отображения, см. в описании EnumDisplayDevices.

Параметр lpszDeviceName может иметь значение ПУСТО (NULL). Значение ПУСТО (NULL) устанавливает заданное по умолчанию устройство отображения. Устройство, используемое по умолчанию может определяться при помощи вызова функции EnumDisplayDevices и установкой флажка DISPLAY_DEVICE_PRIMARY_DEVICE.

lpDevMode

[in] Указатель на структуру DEVMODE, которая описывает новый графический режим. Если параметр lpDevMode равен ПУСТО (NULL), все текущие значения в системном реестре должны быть используемы для параметров настройки экрана. Передаваемое значение ПУСТО (NULL) для параметра lpDevMode  и 0 для параметра dwFlags  - самый простой способ возвратиться заданному по умолчанию режиму после динамического изменения режима.

Член dmSize  должен быть инициализирован размером структуры DEVMODE, в байтах . Член  dmDriverExtra  должен быть инициализирован, чтобы указывать число байтов собственных данных  драйвера, следующих за структурой DEVMODE. Кроме того, Вы можете использовать любой из ниже следующих членов структуры DEVMODE.

 

Член структуры Предназначение
dmBitsPerPel Битов на пиксель 
dmPelsWidth Ширина пикселя 
dmPelsHeight Высота пикселя 
dmDisplayFlags Флажки режима 
dmDisplayFrequency Частота режима 
dmPosition Позиция устройства в конфигурации многоэкранного монитора. 

В дополнение к использованию одного или нескольких предшествующих членов структуры DEVMODE, Вы должны также установить одно или несколько  ниже следующих значений в члене dmFields, чтобы  изменить параметры настройки экрана.

 

Значение Предназначение
DM_BITSPERPEL Используйте значение dmBitsPerPel.
DM_PELSWIDTH Используйте значение dmPelsWidth.
DM_PELSHEIGHT Используйте значение dmPelsHeight.
DM_DISPLAYFLAGS Используйте значение dmDisplayFlags.
DM_DISPLAYFREQUENCY Используйте значение dmDisplayFrequency.
DM_POSITION Используйте значение  dmPosition.
 

hwnd

Зарезервировано; должно быть ПУСТО (NULL).

dwflags

[in] Указывает, какой графический режим должен быть изменен. Этот параметр может быть одним из ниже перечисленных значений.

 

Значение Предназначение
0 Графический режим для текущего экрана должен  изменяться динамически. 
CDS_FULLSCREEN Режим является по характеру временным.

Windows NT/2000/XP: Если Вы меняете один на другой рабочий стол, этот режим не будет сброшен. 

CDS_GLOBAL Параметры настройки должны  сохраняться в общей области параметров настроек так, чтобы они воздействовали на на всех пользователей на машине. В противном случае, модифицируются только параметры настройки конкретного пользователя . Этот флажок допустим только тогда,  когда устанавливается с флажком CDS_UPDATEREGISTRY. 
CDS_NORESET Параметры настройки  должны сохраняться в системном реестре, но не будут оказывать воздействие. Этот флажок допустим только тогда,  когда установлен с флажком CDS_UPDATEREGISTRY. 
CDS_RESET Параметры настройки должны быть изменены, даже если затребованные параметры настройки - те же самые, что и текущие параметры настройки. 
CDS_SET_PRIMARY Это устройство станет первичным устройством. 
CDS_TEST Система тестирует , может ли быть установлен затребованный графический режим. 
CDS_UPDATEREGISTRY Графический режим текущего экрана должен изменяться динамически и должен модифицироваться в системном реестре. Информация о режиме сохраняется в профиле USER (ПОЛЬЗОВАТЕЛЯ). 
CDS_VIDEOPARAMETERS Когда флажок установлен, параметр lParam  - указатель на структуру VIDEOPARAMETERS. 

Определение CDS_TEST дает возможность приложению  выяснить, какие графические режимы  фактически допустимы, не заставляя систему подстраиваться к ним.

Если определяется флажок CDS_UPDATEREGISTRY, и есть возможность изменить графический режим динамически, информация сохраняется в системном реестре и возвращается значение DISP_CHANGE_SUCCESSFUL . Если не возможно изменять графический режим динамически, информация сохраняется в системном реестре и возвращается значение DISP_CHANGE_RESTART .

Windows NT/2000/XP: Если задается флажок CDS_UPDATEREGISTRY, а информация не может сохраниться в системном реестре, графический режим не изменяется и возвращается значение DISP_CHANGE_NOTUPDATED.

lParam

[in] Если параметр dwFlags равен CDS_VIDEOPARAMETERS, lParam - указатель на структуру VIDEOPARAMETERS. В противном случае lParam должен быть  ПУСТО (NULL).

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

Функция ChangeDisplaySettingsEx возвращает одно из ниже перечисленных значений.

Значение Предназначение
DISP_CHANGE_SUCCESSFUL Изменение  параметров настройки прошло успешно. 
DISP_CHANGE_BADDUALVIEW Windows XP: Изменение параметров настройки было неудачным, потому что система включает в себя DualView. 
DISP_CHANGE_BADFLAGS Был передан недопустимый набор флажков. 
DISP_CHANGE_BADMODE Этот графический режим не поддерживается. 
DISP_CHANGE_BADPARAM Был передан недопустимый параметр . Это может включить в себя ошибочный флажок или комбинацию флажков. 
DISP_CHANGE_FAILED Работа драйвера  дисплея  по установке графического режима завершилась ошибкой. 
DISP_CHANGE_NOTUPDATED Windows NT/2000/XP: Не в состоянии записать параметры настройки в системный реестр. 
DISP_CHANGE_RESTART Компьютер должен быть перезапущен, чтобы заработал  графический режим. 
 

Замечания

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

При добавлении программно экрана монитора к системе многоэкранного монитора,  член структуры DEVMODE.dmFields устанавливается в значение DM_POSITION и задает позицию (в DEVMODE.dmPosition) видеомонитора, который Вы прибавляете, чтобы он примыкал по меньшей мере одним пикселем  к области отображения существующего монитора. Чтобы отключить монитор, установите член структуры DEVMODE.dmFields в DM_POSITION, но  члены DEVMODE.dmPelsWidth и DEVMODE.dmPelsHeight установите в нуль. За подробной информацией, обратитесь к статье Многоэкранные мониторы.

Когда режим визуального отображения изменяется динамически, сообщение WM_DISPLAYCHANGE  отправляется всем выполняющимся прикладным программам с ниже следующими параметрами сообщения.

Параметры Предназначение
wParam Новых битов на пиксель 
LOWORD(lParam) Ширина нового пикселя 
HIWORD(lParam) Высота нового пикселя 

Чтобы изменить параметры настройки больше чем одного дисплея в одно и то же время, сначала вызовите функцию ChangeDisplaySettingsEx для каждого устройства индивидуально, чтобы модифицировать системный реестр, не применяя изменений. Затем вызовите ChangeDisplaySettingsEx еще раз, с нулевым (NULL) устройством, чтобы применить изменения. Например, чтобы изменить параметры настройки  двух дисплеев, сделайте ниже следующее:
 

ChangeDisplaySettingsEx (lpszDeviceName1, lpDevMode1, NULL, (CDS_UPDATEREGISTRY | CDS_NOREST), NULL);
ChangeDisplaySettingsEx (lpszDeviceName2, lpDevMode2, NULL, (CDS_UPDATEREGISTRY | CDS_NOREST), NULL);
ChangeDisplaySettingsEx (NULL, NULL, NULL, 0, NULL);
 

Windows 98/Me: ChangeDisplaySettingsExW поддерживается программой Microsoft Layer for Unicode. Чтобы использовать ее, Вы должны добавить некоторые файлы к вашему приложению, как изложено в описании Microsoft Layer for Unicode для системы Windows 95/98/ME.

Смотри также 

Обзор Контексты  устройства, Функции, используемые контекстами устройства, CreateDC,  DEVMODE, EnumDisplayDevices, EnumDisplaySettings, VIDEOPARAMETERS, WM_DISPLAYCHANGE

Размещение и совместимость ChangeDisplaySettingsEx

Windows. NET Server

Да

Windows XP

Да

Windows 2000

Да

Windows NT

Нет

Windows Me

Да

Windows 98

Да

Windows 95

Нет

Используемая библиотека

User32.lib

Заголовочный файл

 

- объявлено в

Winuser.h

- включено в

Windows.h

Unicode

Реализуется как версии Unicode и  ANSI для Windows 2000/XP. А также поддерживается программой Microsoft Layer for Unicode.

Замечания по платформе

Не имеется

 

Назад в оглавление
На главную страницу
На оглавление справки

Hosted by uCoz