Операционная система Microsoft Windows 3.1 для программиста© Александр Фролов, Григорий ФроловТом 11, М.: Диалог-МИФИ, 1993, 269 стр. 2.7. Изменение режимов вывода текстаВ контексте отображения указываются различные режимы и атрибуты, которые используются для вывода текста, такие, как способ выравнивания текста относительно указанных для вывода координат, цвет текста и цвет фона, шрифт и т. д. Программный интерфейс Windows содержит несколько функций, позволяющих изменить контекст отображения, в результате чего изменится режим вывода текста. Функция SetTextAlign позволяет определить выравнивание прямоугольной области, используемой для вывода текста, относительно указанных координат вывода. Эта функция имеет следующий прототип: UINT WINAPI SetTextAlign(HDC hdc , UINT fuAlign); Первый параметр функции, hdc, является идентификатором контекста отображения, используемого для вывода текста. Второй параметр, fuAlign, состоит из трех наборов битовых флагов. Флаги из каждого набора можно объединять при помощи логической операции ИЛИ. Первый набор содержит три флага, влияющих на выравнивание воображаемого прямоугольника, ограничивающего текст, по горизонтали относительно указанных в функции (такой, как TextOut) координат:
Вторая группа флагов отвечает за выравнивание текста по вертикали:
Последняя, третья группа флагов отвечает за обновление текущей позиции вывода текста:
Вы можете узнать состояние флагов выравнивания, выбранных в контекст отображения, при помощи функции GetTextAlign: UINT WINAPI GetTextAlign(HDC hdc); Для контекста отображения, указанного первым параметром hdc, функция возвращает значение, в котором могут быть установлены отдельные биты, перечисленные выше. Можно изменить цвет текста. Для этого необходимо вызвать функцию SetTextColor: COLORREF WINAPI SetTextColor(HDC hdc, COLORREF clrref); Параметр hdc определяет контекст отображения, для которого вы собираетесь изменить цвет текста. Структура clrref определяет цвет. Функция SetTextColor возвращает значение цвета, которое использовалось для вывода текста раньше. Тип данных COLORREF определен в файле windows.h следующим образом: typedef DWORD COLORREF; Для указания цвета удобно использовать макрокоманду RGB, определенную в файле windows.h: #define RGB(r,g,b) ((COLORREF)(((BYTE)(r) | ((WORD)(g)<<8)) | (((DWORD)(BYTE)(b))<<16))) В качестве параметров для этой макрокоманды вы можете указывать интенсивность отдельных цветов в диапазоне от 0 до 255:
Для определения отдельных цветовых компонент из возвращаемого функцией SetTextColor значения удобно использовать макрокоманды GetRValue, GetGValue и GetBValue, определенные в файле windows.h: #define GetRValue(rgb) ((BYTE)(rgb)) #define GetGValue(rgb) ((BYTE)(((WORD)(rgb)) >> 8)) #define GetBValue(rgb) ((BYTE)((rgb)>>16)) С помощью этих макрокоманд вы сможете определить значения соответственно для красной, зеленой и голубой компоненты цвета. В любой момент времени вы можете определить текущий цвет, используемый для вывода текста. Для этого следует вызвать функцию GetTextColor: COLORREF WINAPI GetTextColor(HDC hdc); Для указанного при помощи единственного
параметра контекста отображения функция
возвращает цвет, используемый для вывода текста. |