Текущее разрешение экрана можно узнать с помощью вызова GetSystemMetrics() в качестве параметров передается:
SM_CXSCREEN
высота рабочей области экрана в пикселах
SM_CYSCREEN
ширина рабочей области экрана в пикселах
SM_CXFULLSCREEN
высота всей экранной области в пикселах
SM_CYFULLSCREEN
ширина всей экранной области в пикселах
Ниже приведен пример получения высоты и ширины рабочей области экрана (для всей экранной области надо просто поменять параметры вызова GetSystemMetrics):
Code: |
var x, y: Integer; Mode: string; begin x:=GetSystemMetrics(Sm_Cxscreen); y:=GetSystemMetrics(Sm_CYscreen); Mode:=Format('%d x %d',[x,y]); if y=480 then Mode:=Mode+('Standard VGA') else Mode:=Mode+('Super VGA'); StaticText1.Caption:=Mode; end; |
Установка видеорежима
Как мы убедились получения списка и параметров видеорежимов не проблема. Теперь разберемся с программной сменой видеорежимов. Функция ChangeDisplaySettings предназначена для изменения текущего видеорежима экрана и при необходимости обновления этой информации в реестре Windows.
function ChangeDisplaySettings(var lpDevMode: TDeviceMode;
dwFlags: DWORD): Longint; stdcall;
Параметры:
lpDevMode
Структура с описанием видеорежима, на который мы хотим переключиться. Поля структуры были рассмотрены ранее.
dwFlags
Определяет как будет изменен видеорежим.
0 - Немедленное изменение видеорежима. Установка данного флага возвращает в видеорежим по умолчанию, установленному в реестре, если он был изменен с применением флага CDS_FULLSCREEN, при этом первый параметр функции должен быть nil и флаги равны 0.
CDS_UPDATEREGISTRY - Видеорежим будет изменен немедленно и информация записана в реестр в пользовательский профиль.
CDS_TEST - Запрос теста видеорежима средствами Windows
CDS_FULLSCREEN - Установка видеорежима временна.
CDS_GLOBAL - Видеорежим будет изменен для всех пользователей данной машины. Иначе видеорежим меняется только для текущего пользователя. Используется вместе с флагом CDS_UPDATEREGISTRY.
CDS_SET_PRIMARY - Видеорежим становится первичным.
CDS_RESET - Параметры видеорежима будут изменены, даже если совпадают с текущими.
CDS_NORESET - Изменения будут записаны в реестр, но не вступят в силу. Используется с флагом CDS_UPDATEREGISTRY
Возвращаемое значение:
DISP_CHANGE_SUCCESSFUL Изменения прошли успешно.
DISP_CHANGE_RESTART Необходима перезагрузка для вступления изменений в силу
DISP_CHANGE_BADFLAGS Передан неверный набор флагов
DISP_CHANGE_BADPARAM Неверные параметры.
DISP_CHANGE_FAILED Драйвер видеоустройства не смог установить режим
DISP_CHANGE_BADMODE Видеорежим не поддерживается
DISP_CHANGE_NOTUPDATED Windows NT/2000: Ошибка записи в реестр
При немедленном изменении видеорежима всем запущенным приложениям рассылается сообщение WM_DISPLAYCHANGE.
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!