Функция ChangeDisplaySettings изменяет параметры настройки заданного по умолчанию устройства отображения в указанном графическом режиме.
Чтобы изменить параметры настройки указанного устройства отображения, используйте функцию ChangeDisplaySettingsEx.
Синтаксис
LONG ChangeDisplaySettings( LPDEVMODE lpDevMode, // графический режим DWORD dwflags // параметры графического режима ); |
lpDevMode
[in] Указатель на структуру DEVMODE, которая описывает новый графический режим. Если lpDevMode имеет значение ПУСТО (NULL), для настройки дисплея должны использоваться все текущие значения в системном реестре. Передача значения ПУСТО (NULL) в параметр lpDevMode и 0 в параметр dwFlags - самый легкий способ возвратиться заданному по умолчанию режиму после динамического изменения режима.Член dmSize структуры DEVMODE должен быть инициализирован размером DEVMODE, в байтах. Член dmDriverExtra структуры DEVMODE должен быть инициализирован так, чтобы указывать число байтов собственных данных драйвера, сопровождающих структуру DEVMODE. Кроме того, Вы можете использовать любой или все из ниже перечисленных членов структуры DEVMODE.
Член | Предназначение |
---|---|
dmBitsPerPel | Бит на пиксель |
dmPelsWidth | Ширина пикселя |
dmPelsHeight | Высота пикселя |
dmDisplayFlags | Флажки режима |
dmDisplayFrequency | Частотный режим |
dmPosition | Windows 98/Me, Windows 2000/XP: Позиция в устройстве при много мониторной конфигурации |
Значение | Предназначение |
---|---|
DM_BITSPERPEL | Используйте значение dmBitsPerPel. |
DM_PELSWIDTH | Используйте значение dmPelsWidth. |
DM_PELSHEIGHT | Используйте значение dmPelsHeight. |
DM_DISPLAYFLAGS | Используйте значение dmDisplayFlags. |
DM_DISPLAYFREQUENCY | Используйте значение dmDisplayFrequency. |
DM_POSITION | Windows 98/Me, Windows 2000/XP: Используйте значение dmPosition. |
[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_TEST дает возможность приложению выяснить, какой графический режим, действительно допустим, без принуждения системы изменять этот графический режим.
Если установлен флажок CDS_UPDATEREGISTRY и возможно динамически изменить графический режим , информация сохраняется в системном реестре и возвращается значение DISP_CHANGE_SUCCESSFUL . Если не возможно динамически изменить графический режим , информация сохраняется в системном реестре, а возвращается значение DISP_CHANGE_RESTART .
Windows NT/2000/XP: Если установлен флажок CDS_UPDATEREGISTRY, а информация не может быть сохранена в системном реестре, графический режим не изменяется и возвращается значение DISP_CHANGE_NOTUPDATED.
Функция ChangeDisplaySettings возвращает одно из ниже перечисленных значений.
Значение | Предназначение |
---|---|
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, переданная функции ChangeDisplaySettings правильна и содержит только значения, поддерживаемые драйвером дисплея, используйте значение DEVMODE, возвращенное функцией EnumDisplaySettings.
Когда режим дисплея изменяется динамически, сообщение WM_DISPLAYCHANGE отправляется всем запущенным прикладным программам с нижеследующими параметрами этого сообщения.
Параметр | Назначение |
---|---|
wParam | Новое число битов на пиксель |
LOWORD(lParam) | Новая ширина пикселя |
HIWORD(lParam) | Новая высота пикселя |
Windows 95/98/Me: ChangeDisplaySettingsW поддерживается подпрограммой Microsoft Layer for Unicode (MSLU). Чтобы использовать подпрограмму, Вы должны добавить некоторые файлы к вашему приложению, как это определено в Microsoft Layer for Unicode для систем Windows 95/98/Me.
Смотри также
Обзор Контексты устройства, Функции, используемые контекстом устройства, ChangeDisplaySettingsEx, CreateDC, DEVMODE, EnumDisplayDevices, EnumDisplaySettings, WM_DISPLAYCHANGE
Размещение и совместимость ChangeDisplaySettings |
|
Windows. NET Server |
Да |
Windows XP |
Да |
Windows 2000 |
Да |
Windows NT |
Да версии 3.5 и старше |
Windows Me |
Да |
Windows 98 |
Да |
Windows 95 |
Да |
Используемая библиотека |
User32.lib |
Заголовочный файл |
|
- объявлено в |
Winuser.h |
- включено в |
Windows.h |
Unicode |
Нет |
Замечания по платформе |
Не имеется |