Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции -Процедурное программирование в Windows.doc
Скачиваний:
13
Добавлен:
13.09.2019
Размер:
742.91 Кб
Скачать

Получение информации из контекста устройства

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

Данную информацию можно получить, вызвав функцию GetDeviceCaps. Формат вызова данной функции представлен ниже:

nValue = GetDeviceCaps (hDC,nIndex);

Первый параметр данной функции задает контекст устройства, второй – является одним из двадцати пяти идентификаторов, определенных в файле windows.h.

Наиболее интересной информацией, которую можно получить при помощи функции GetDeviceCaps, являются данные о размере отображающей поверхности данного устройства. Например, можно определить размер экрана дисплея (в миллиметрах, дюймах или пикселах). Ниже приведены возможные значения параметра nIndex функции GetDeviceCaps, с помощью которых можно получить размеры экрана.

HORSISE и VERTSIZE

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

HORZRES и VERTRES

Возвращаются соответственно горизонтальный и вертикальный размеры экрана в пикселах.

ASPECTX, ASPECTY и ASPECTXY

Возвращаются соответственно относительный горизонтальный, вертикальный, диагональный размеры пиксела.

LOGPIXELSX и LOGPIXELSY

Возвращаются соответственно количество пикселов в горизонтальном и вертикальном «логических дюймах». «Логический дюйм» физически не равен одному дюйму. Как правило, эти два идентификатора не используются.

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

nPlanes = GetDeviceCaps (hDC, PLANES);

Для определения количества битов, используемых в каждом слое видеопамяти для задания цвета пиксел, следует указать флаг BITSPIXEL:

nBitPixel = GetDeviceCaps (hDC, BITSPIXEL);

В том случае, когда необходимо определить общее количество битов на пиксел во всех слоях видеопамяти, также используется функция GetDeviceCaps:

nNumColors = GetDeviceCaps (hDC, NUMCOLORS);

Во всех трех представленных выше примерах использования функции GetDeviceCaps, первый параметр содержит контекст устройства, а второй является одной из трех констант, определенных в файле windows.h.

Атрибуты контекста устройства

Контекст устройства является совокупностью атрибутов, которые определяют, как функции GDI работают на данном устройстве.

В момент, когда мы получаем контекст устройства (например, когда мы собираемся отображать текст или графические объекты в окне), Windows создает структуру контекста устройства и заполняет ее значениями, принятыми по умолчанию. Впоследствии приложение может считывать и при необходимости изменять атрибуты полученного контекста устройства. Однако при освобождении контекста устройства все изменения, произведенные в нем, теряются.

Приведенная таблица содержит список атрибутов контекста устройства и значения, присваиваемые им по умолчанию. Для режима MM_TEXT:

MM_TEXT

Режим битового образа

(0, 0)

Начало координат окна

(0, 0)

Начало физических координат

(1, 1)

Масштаб осей окна

(1, 1)

Масштаб осей физического устройства отображения

BLACK_PEN

Перо

WHITE_BRUSH

Кисть

SYSTEM_FONT

Шрифт

Битовый образ

(0, 0)

Текущая позиция пера

QPAQUE

Режим фона

White

Цвет фона

Black

Цвет текста

R2_COPYPEN

Режим отображения

BLACKONWHITE

Режим растяжения

ALTERNATE

Режим заполнения

0

Пространство между символами

(0, 0)

Исходное положение кисти