Функция ChangeDisplaySettings


Функция 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: Позиция в устройстве при много мониторной конфигурации 

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

 

Значение Предназначение
DM_BITSPERPEL Используйте значение dmBitsPerPel
DM_PELSWIDTH Используйте значение dmPelsWidth
DM_PELSHEIGHT Используйте значение dmPelsHeight
DM_DISPLAYFLAGS Используйте значение dmDisplayFlags
DM_DISPLAYFREQUENCY Используйте значение dmDisplayFrequency
DM_POSITION Windows 98/Me, Windows 2000/XP: Используйте значение dmPosition

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_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: Если вызывающий поток имеет какие-либо окна, функция ChangeDisplaySettings отправляет им немедленно сообщение WM_DISPLAYCHANGE  (для окон во всех других потоках, сообщение отправляется тогда, когда поток может принимать внеочередные (асинхронные) сообщения). Это может заставить оболочку программы получить свое сообщение слишком быстро и может уничтожить пиктограммы. Чтобы избежать этой проблемы, делайте переключение разрешающей способности при помощи вызова ChangeDisplaySettings на потоке без окон, например,  на новом потоке.

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

Нет

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

Не имеется

 

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

Hosted by uCoz