Функция 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. |
|
Замечания по платформе |
Не имеется |