Функция 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 (lpszDeviceName1,
lpDevMode1, NULL, (CDS_UPDATEREGISTRY | CDS_NOREST), 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. |
Замечания по платформе |
Не имеется |