Функция ChangeDisplaySettings

Declare Function ChangeDisplaySettings Lib "user32.dll" Alias "ChangeDisplaySettingsA" (lpDevMode As Any, ByVal dwFlags As Long) As Long

ChangeDisplaySettings изменяет текущие параметры настройки экрана. Эта функция может менять текущее разрешение экрана и разрядность цвета. Как правило, следует вызвать функцию EnumDisplaySettings, чтобы получить возможные параметры экрана.

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

Функция возвращает следующие значения:

Значение Описание
DISP_CHANGE_SUCCESSFUL = 0 Параметры настройки экрана были успешно изменены
DISP_CHANGE_RESTART = 1 Компьютер нужно перезагрузить, чтобы изменения вступили в силу
DISP_CHANGE_BADFLAGS = -4 Определен недействительный набор флажков
DISP_CHANGE_BADPARAM = -5 Определен недопустимый параметр
DISP_CHANGE_FAILED = -1 Драйвер дисплея не поддерживает указанный графический режим
DISP_CHANGE_BADMODE = -2 Указанный графический режим не поддерживается
DISP_CHANGE_NOTUPDATED = -3 Windows NT/2000: Настройки не могут быть записаны в реестр

Параметры

lpDevMode
Структура DEVMODE, содержащая новые параметры настройки экрана. Используются только dmBitsPerPixel, dmPelsWidth, dmPelsHeight, dmDisplayFlags и dmDisplayFrequency. Параметр dmPosition также можно использовать). Чтобы восстановить параметры настройки, сохраненные в системном реестре, обнулите этот параметр и dwFlags
dwFlags
Комбинация следующих флажков, определяющих, как изменять графический режим. Если никакие флажки не установлены (то есть, установлен нуль), графический режим изменен динамически
CDS_UPDATEREGISTRY= &H1
Сохранить новые параметры настройки в системном реестре, и также изменить параметры настройки динамически
CDS_TEST= &H2
Режим тестирования для проверки, поддерживаются ли новые параметры настройки аппаратными средствами, без фактического изменения параметров настройки. Возвращаемое значение функции укажет любые проблемы, которые, возможно, произошли
CDS_FULLSCREEN= &H4
Полноэкранный режим. Это установка не может быть сохранена
CDS_GLOBAL= &H8
Сохраните новые параметры настройки для всех пользователей. Флажок CDS_UPDATEREGISTRY должен также быть определен
CDS_SET_PRIMARY= &H10
Установка устройства первичным устройством отображения
CDS_RESET= &H40000000
Измените параметры настройки, даже если они совпадают с текущими параметрами настройки
CDS_NORESET= &H10000000
Сохраните параметры настройки в системном реестре, но новые параметры вступят в силу позже. Флажок CDS_UPDATEREGISTRY должен также быть определен

Пример

' Меняем текущее разрешение экрана
' на 640*480 и сохраняем установки в реестре.
' Тестируем, поддерживает ли видеоадаптер новое
' разрешение. Если необходима перезагрузка,
' то информируем пользователя. Установите на форме
' кнопку Command1

Dim dm As DEVMODE  ' настройки экрана
Dim retval As Long ' возвращаемое значение
	
' Инициализируем структуру
dm.dmSize = Len(dm)
	
' Получаем текущие настройки экрана
retval = EnumDisplaySettings(vbNullString, ENUM_CURRENT_SETTINGS, dm)
' Меняем разрешение на 640*480
dm.dmPelsWidth = 640
dm.dmPelsHeight = 480
' Проверяем,возможно ли это
retval = ChangeDisplaySettings(dm, CDS_TEST)
  If retval <> DISP_CHANGE_SUCCESSFUL Then
	Debug.Print "Нельзя устанавливать такое разрешение!"
  Else
' Меняем и сохраняем новые параметры
        retval = ChangeDisplaySettings(dm, CDS_UPDATEREGISTRY)
  Select Case retval
   Case DISP_CHANGE_SUCCESSFUL
     Debug.Print "Новое разрешение установлено!"
   Case DISP_CHANGE_RESTART
     Debug.Print "Необходима перезагрузка, чтобы изменения вступили в силу"
   Case Else
     Debug.Print "Не могу изменить настройки!"
  End Select
	
 End If

Смотри также

EnumDisplaySettings

Категория

Устройства
Реклама