Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб_API-контроль.doc
Скачиваний:
10
Добавлен:
01.07.2025
Размер:
183 Кб
Скачать
☆

3 Лабораторная работа №3. Видеосистема

Целью данной работы является изучение основных функций Win32 API работы с видеосистемой Windows.

Пример использования функций в пользовательских приложениях приведен в демонстрационной программе lab_api.exe. Для визуального просмотра результатов выполнения данных функций требуется запустить программу lab_api.exe и выбрать опцию меню «Видеосистема». В справочной системе приведено полное описание используемых функций, включая синтаксис функции. Вызов справочной системы производится из программы lab_api.exe через опцию меню «Справочная система» либо запуском программы lab_help.exe.

3.1 Основное функциональное назначение видеосистемы

Видеосистема обеспечивает обратную связь в интерфейсе пользователя. На дисплей выводится информация о работе программ. Вместе с устройствами ручного ввода видеосистема является неотъемлемой частью всех современных ПЭВМ. Для ПЭВМ в основном используются дисплеи на базе электронно-лучевых трубок.

Функции видеосистемы представляют собой весь набор действий связанных с выводом графической информации, режимом отображения, цветовой палитрой системы и сервисом. Под выводом графической информации понимаются операции касающиеся вывода цветных (для цветной системы) точек и фигур, закрашивание и копирование областей, вывод текста. Количество режимов отображения (видеорежимов) имеют конечное значение, которое определяется количеством возможных цветовых режимов (4-битный, 8-битный, 16-битный и 32-битный) и разрешений (640х480, 800х600, 1024х768 и т.д.). Цветовая палитра операционной системы это определенные цвета, которые окрашивают те или иные объекты стандартного интерфейса пользователя. Такими элементами для Windows являются рабочий стол, шрифты, окна и их элементы. Сервисные функции видеосистемы заключаются в управлении хранителями экрана, отключением дисплея и т.п.

Не смотря на различные виды дисплеев и видеоадаптеров, доступ со стороны программ к видеосистеме достаточно унифицирован.

3.2 Функции Win32 api для видеосистемы

Как и для других систем ПЭВМ, функции видеосистемы разделяются на информационные и управляющие. Информационные функции видеосистемы служат для получения скрытых от пользователя параметров отображения и для автоматической реакции программы на текущее состояние видеосистемы. К основным информационным функциям относятся:

  • GetSysColor;

  • SystemParametersInfo;

  • GetSystemMetrics;

  • GetDeviceCaps;

  • EnumDisplaySetting;

  • GetPixel.

Следует обратить внимание, что функция SystemParametersInfo встречается также среди функций устройств ручного ввода, таким образом, являясь многоцелевой. Эта одна из главных особенностей многих функций Win32 API. С использованием выше перечисленных функций можно получить информацию о:

  • цветовой палитре интерфейса операционной системы;

  • времени запуска хранителя экрана;

  • разрешении видеосистемы;

  • количестве цветов видеосистемы;

  • доступных вариантах разрешений и цветов видеосистемы;

  • цвете заданной точки устройства.

Для настройки параметров видеосистемы и для вывода на дисплей графических изображений используются управляющие функции Win32 API. В рассматриваемом наборе управляющих функций не будут отражены все функции рисования геометрических фигур и точек, а также функции заливки вследствие простоты их использования. Достаточно будет привести только функцию BitBlt показывающую принцип обращения с функциями данного вида.

Управляющие функции видеосистемы:

  • SetSysColors;

  • SystemParametersInfo;

  • ChangeDisplaySetting;

  • BitBlt;

  • и т.п.

Как видно, некоторые функции являются и управляющими и информационными. Характерно и то, что набор функций меньше чем набор выполняемых действий. Этот факт объясняется тем, что, во-первых, довольно часто входной информацией для выполнения действия является один бит, и в таком случае нерационально использование целого байта или слова. Во-вторых, чтобы не расширять и без того большие списки имен функций, можно объединить операции сходные по назначению или по какому-нибудь признаку в одной функции.

Приведенный выше набор функций позволяет выполнить следующие действия при выводе графической информации на экран видеосистемы:

  • установить цвета элементов интерфейса операционной системы;

  • установить обои рабочего стола;

  • установить время включения хранителя экрана;

  • изменить видеорежим экрана;

  • копировать изображение.

Вспомогательные или обслуживающие функции, такие как GetActiveWindow, GetDesktopWindow, GetDC, GetWindowDC и ReleaseDC имеют место, также как и в файловой системе. В данном случае приведенные функции обслуживают процессы рисования, и процессы получения информации об области вывода графических данных (дисплей, принтер).

Например, перед выполнением функций рисования требуется получить идентификатор контекста устройства (GetActiveWindow, GetDC). Получение этого идентификатора связано с выделением памяти для его хранения, поэтому после завершения процесса рисования, следует освободить память (ReleaseDC). Естественно, что включение вспомогательных функций в управляющие, значительно упростило бы их использование. Однако при необходимости многократного использования контекста устройства, подобное включение, а значит постоянное выделение и освобождение памяти для каждой функции, было бы не рационально и внесло бы значительную задержку пропорциональную количеству функций рисования.