function SetFullscreenMode: Boolean;
var
DeviceMode: TDevMode;
beginwith DeviceMode dobegin
dmSize := SizeOf(DeviceMode);
dmBitsPerPel := 16;
dmPelsWidth := 640;
dmPelsHeight := 480;
dmFields := DM_BITSPERPEL or DM_PELSWIDTH or DM_PELSHEIGHT;
result := False;
if ChangeDisplaySettings(DeviceMode, CDS_TEST or CDS_FULLSCREEN) <>
DISP_CHANGE_SUCCESSFUL then
Exit;
Result := ChangeDisplaySettings(DeviceMode, CDS_FULLSCREEN) =
DISP_CHANGE_SUCCESSFUL;
end;
end;
procedure RestoreDefaultMode;
var
T: TDevMode absolute 0;
begin
ChangeDisplaySettings(T, CDS_FULLSCREEN);
end;
procedure TForm1.Button1Click(Sender: TObject);
beginif setFullScreenMode thenbegin
sleep(7000);
RestoreDefaultMode;
end;
end;
Программа на Delphi, которая устанавливает отображение в полноэкранном режиме и затем возвращает его в исходное состояние. Функция SetFullscreenMode пытается изменить параметры отображения в полноэкранном режиме и возвращает True, если это успешно.
Следующий код объясняет, как работает программа:
Функция SetFullscreenMode создает запись TDevMode, которая используется для хранения информации о устройстве (в этом случае, отображении).
Затем она устанавливает различные поля в записи DeviceMode:
dmSize: Размер записи DeviceMode.
dmBitsPerPel: Количество бит на пиксель. В этом случае, оно установлено в 16.
dmPelsWidth и dmPelsHeight: Ширина и высота отображения в пикселях. Здесь они устанавливаются в 640x480.
Поле dmFields устанавливается в комбинацию флагов, которые указывают, какие поля в записи были изменены.
Функция затем вызывает ChangeDisplaySettings с записью DeviceMode и двумя флагами: CDS_TEST (для тестирования новых параметров) и CDS_FULLSCREEN (для изменения отображения в полноэкранном режиме). Если это вызов успешен, он возвращает DISP_CHANGE_SUCCESSFUL.
Функция затем вызывает ChangeDisplaySettings снова с только CDS_FULLSCREEN, если первый вызов был только тестом.
Наконец, функция возвращает результат второго вызова ChangeDisplaySettings. Если этот вызов успешен, отображение теперь находится в полноэкранном режиме, и функция возвращает True.
Процедура RestoreDefaultMode просто вызывает ChangeDisplaySettings с CDS_FULLSCREEN снова, но на этот раз без записи DeviceMode. Это должно восстановить отображение в его исходное состояние.
В обработчике события Button1Click для кнопки на форме, если SetFullscreenMode возвращает True, она ожидает 7 секунд и затем вызывает RestoreDefaultMode.
Некоторые улучшения, которые можно сделать:
Обработка ошибок: Код не проверяет ошибки, которые могут возникнуть при вызове ChangeDisplaySettings. Нужно добавить обработку ошибок для обработки любых неожиданных результатов.
Организация кода: Функция SetFullscreenMode делает два разных действия: она устанавливает отображение в полноэкранном режиме и затем восстанавливает его в исходное состояние. Лучше было бы иметь одну функцию для установки отображения в полноэкранном режиме и другую для восстановления. Это сделало бы код более понятным и поддерживаемым.
Интерфейс пользователя: Программа не предоставляет никакой обратной связи пользователю о том, что она делает. Нужно добавить метку или сообщение об ошибке, чтобы пользователь знал, когда отображение устанавливается в полноэкранном режиме и когда восстанавливается.
Статья описывает программный код на языке Delphi, который позволяет переключаться в полноэкранный режим и обратно.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.