Интерфейс графических устройствИнтерфейс графических устройств (GDI — Graphics Device Interface) предоставляет приложениям Windows не зависящий от устройства интерфейс к экрану и принтерам. GDI является промежуточным звеном между приложением и аппаратными средствами разных типов. Такая архитектура освобождает программиста от необходимости рассматривать характеристики устройства каждого типа, поскольку все особенности аппаратных средств учтены в GDI. Хорошо спроектированное приложение Windows функционирует одинаково на всех типах современных аппаратных средств и будет так же хорошо функционировать на всех новых аппаратных средствах, которые появятся в будущем.Во всех функциях GDI в Win32 применяются 32-разрядные значения координат GDI; однако в Windows 9x старшее слово игнорируется, поэтому применяются 16-разрядные значения координат. Только в Windows NT/2000 в приложении могут использоваться полные 32-разрядные значения. Это связано с тем, что в Windows 9x не только GDI, но и все другие основные части операционной системы реализованы с использованием 16-разрядного представления чисел для обеспечения максимальной обратной совместимости с Windows 3.x.Контекст устройстваОсновным инструментальным средством, применяемым в Windows для обеспечения независимости приложений от устройств, является так называемый контекст устройства или сокращенно DC (device context). Контекст устройства — это внутренняя структура, применяемая в Windows для управления информацией о выходном устройстве. Вместо направления вывода непосредственно на аппаратное устройство, приложение направляет его в контекст устройства, а затем Windows пересылает вывод в аппаратное устройство. В следующем примере показаны этапы, необходимые для вывода строки в клиентскую область окна.HDC hDC; // Дескриптор контекста устройства.hDC = GetDC( hWnd ) ; // Получить дескриптор контекста устройства клиентской// области окна.// Вывести строку текста в клиентскую область. //.........................................TextOutf hDC, О, О, "Text output to client area.", 27 );ReleaseDCf hWnd, hDC ) ; // Освободить контекст устройства.В этом примере используются возможности, предусмотренные в GDI по умолчанию. Обратите внимание на отсутствие информации о цвете или шрифте текста. В качестве всех этих параметров были взяты предусмотренные по умолчанию значения, которые хранятся в контексте устройства. Чтобы дополнить этот пример, изменимшрифт и цвет текста, добавив вызовы функций SelectObject и SetTextColor, как показано ниже:HOC hDC;hDC = GetDC ( hWnd ) ;// Установить атрибуты текста.SelectObject ( hDC, GetStockObject( ANSI_VAR_FOKT ) ); SetTextColor ( hDC, RGB( 255, 0, 0 ) ) ;TextOut( hDC, 0, 0, "Text output to client area.", 27 ); ReleaseDC( hWnd, hDC );Функция SelectObject выбирает новый шрифт и переносит его в контекст устройства. В данном случае загружается стандартный шрифт, а функция SetTextColor изменяет цвет текста на красный. В результате этих изменений функция TextOut выводит текст красными буквами с использованием символьного шрифта ANSI_VAR_FONT. В приложении можно также внести в контекст устройства множество других изменений с применением функций, предусмотренных API Win32.
Ввод объектов в контекст устройстваКонтекст устройства всегда содержит перо для рисования линий, кисть для закрашивания областей, шрифт для вывода символов, а также ряд других объектов, от которых зависит функционирование контекста устройства. Если для приложения требуется другой шрифт, этот шрифт выбирается для контекста устройства перед отображением текста. Выбор нового шрифта не влияет на текст, отображенный в клиентской области окна.При использовании разделяемого контекста устройства приложение должно восстанавливать предыдущие установки контекста устройства перед вызовом функции освобождения контекста ReleaseDC. После вызова этой функции должны быть удалены объекты, созданные и введенные в контекст устройства, такие как перья и кисти. Не следует удалять объекты, выбранные с помощью функции GetStockObject. Дополнительная информация о стандартных объектах приведена в главе 15.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.