- •Реализация функций контроля и управления на базе Win32 api
- •Киров 2000
- •1 Лабораторная работа №1. Файловая и дисковая система windows 4
- •2 Лабораторная работа №2. Устройства ручного ввода 10
- •3 Лабораторная работа №3. Видеосистема 14
- •1 Лабораторная работа №1. Файловая и дисковая система windows
- •1.1 Размещение файлов. Правила именования файлов
- •1.2 Функции Win32 api получения информации о файлах и дисках
- •1.3 Управляющие функции файловой системы
- •1.4 Вспомогательные функции. Связь всех видов функций
- •1.5 Порядок выполнения лабораторной работы №1
- •2 Лабораторная работа №2. Устройства ручного ввода
- •2.1 Назначение устройств ручного ввода и их виды
- •2.2 Функции Win32 api для клавиатуры и мыши
- •2.3 Порядок выполнения лабораторной работы №2
- •3 Лабораторная работа №3. Видеосистема
- •3.1 Основное функциональное назначение видеосистемы
- •3.2 Функции Win32 api для видеосистемы
- •3.3 Порядок выполнения лабораторной работы №3
- •Литература
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). Естественно, что включение вспомогательных функций в управляющие, значительно упростило бы их использование. Однако при необходимости многократного использования контекста устройства, подобное включение, а значит постоянное выделение и освобождение памяти для каждой функции, было бы не рационально и внесло бы значительную задержку пропорциональную количеству функций рисования.
