Содержание материала

Текущее разрешение экрана можно узнать с помощью вызова 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.

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить