- •Процедурное программирование
- •Регистрация класса окна
- •Создание окна
- •Командная строка приложения
- •Функции окна приложения
- •Сообщение wm_destroy
- •Вывод в рабочую область окна
- •Контекст устройства и область отрисовки.
- •Сообщение wm_paint
- •Окно-список
- •Заполнение окна-списка
- •Список файлов
- •Изменение цвета органов управления
- •Комбинированный список
- •Меню и назначение клавиш
- •Создание описания меню в файле ресурсов
- •Сообщения меню
- •Диалоговые окна ( диалоги )
- •Определение диалоговых окон в файле ресурсов
- •Диалоговое окно About
- •Функция диалогового окна
- •Взаимодействие с органами управления диалоговых окон
- •Окно сообщений
- •Ввод данных
- •Извлечение данных из диалога
- •Ввод - вывод данных посредством передачи сообщений
- •Функция CreateFile ( )
- •Функция WriteFile ( )
- •Отображение файла в память
- •Функция CreateFileMapping().
- •Функция MapViewOfFile()
- •Работа с отображенным файлом
- •И н т е р ф е й с графических устройств (gdi)
- •Контекст устройства
- •Получение индекса контекста устройства
- •Получение информации из контекста устройства
- •Атрибуты контекста устройства
- •Сохранение изменений в контексте устройства
- •Система координат в Windows
- •Режимы отображения
- •Системы координат
- •Режим mm_text
- •Метрические режимы
- •Режим mm_isotropic
- •Режим mm_anisotropic
- •Вывод графических объектов
- •Двумерные объекты
- •Сегмент и сектор эллипса
- •Библиографический список
Получение информации из контекста устройства
При помощи контекста устройства можно получить информацию о таких устройствах, как дисплей, печатающее устройство, графопостроитель. Например, можно определить такие параметры устройства отображения, как количество цветов, ширину и высоту поверхности отображения, относительную высоту и ширину каждого пиксела изображения.
Данную информацию можно получить, вызвав функцию 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) |
Исходное положение кисти |