Реализация функций контроля и управления на базе Win32 API: Методические указания по выполнению лабораторного практикума, страница 10

§  GetDeviceCaps – позволяет получить параметры видеосистемы (количество цветов, разрядность и т. д.);

§  EnumDisplaySetting – позволяет получить доступные варианты разрешений и цветов видеосистемы;

§  GetPixel – позволяет получить цвет заданной точки устройства.

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

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

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

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

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

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

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

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

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

§  SetSysColors – позволяет установить цвета элементов интерфейса операционной системы;

§  SetPixel – позволяет установить цвет точки экрана;

§  SystemParametersInfo – позволяет установить фон рабочего стола;

§  ChangeDisplaySetting – позволяет изменить видеорежим экрана;

§  BitBlt – позволяет копировать изображение;

§  и т.п.

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

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

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

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

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

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

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

Функции работы с окнами позволяют изменять расположение и размер окон, выполнять компоновку окон на экране и т. д. Некоторые из этих функций:

§  SetWindowPos – позволяет указать расположение указанного окна на экране;

§  SetActiveWindow – позволяет сделать указанное окно активным;

§  BringWindowToTop – позволяет расположить указанное окно поверх остальных окон;

§  CascadeWindows – позволяет расположить открытые окна каскадом;

§  TileWindows – позволяет расположить открытые окна на экране.

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

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