Изменение режимов вывода текста
В контексте отображения указываются различные режимы и атрибуты, которые используются для вывода текста, такие, как способ выравнивания текста относительно указанных для вывода координат, цвет текста и цвет фона, шрифт и т. д. Программный интерфейс Windows содержит несколько функций, позволяющих изменить контекст отображения, в результате чего изменится режим вывода текста.
Функция SetTextAlign позволяет определить выравнивание прямоугольной области, используемой для вывода текста, относительно указанных координат вывода. Эта функция имеет следующий прототип:
UINT WINAPI SetTextAlign(HDC hdc , UINT fuAlign);
Первый параметр функции, hdc, является идентификатором контекста отображения, используемого для вывода текста.
Второй параметр, fuAlign, состоит из трех наборов битовых флагов. Флаги из каждого набора можно объединять при помощи логической операции ИЛИ.
Первый набор содержит три флага, влияющих на выравнивание воображаемого прямоугольника, ограничивающего текст, по горизонтали относительно указанных в функции (такой, как TextOut) координат:
Символическое имя флага | Описание |
TA_CENTER | Выравнивание по центру |
TA_LEFT | Выравнивание по левой границе. Этот способ выравнивания используется по умолчанию |
TA_RIGHT | Выравнивание по правой границе |
Вторая группа флагов отвечает за выравнивание текста по вертикали:
Символическое имя флага | Описание |
TA_BASELINE | Выравнивание по базовой линии шрифта |
TA_TOP | Выравнивание по верхней границе. Этот режим используется по умолчанию |
TA_BOTTOM | Выравнивание по нижней границе |
Последняя, третья группа флагов отвечает за обновление текущей позиции вывода текста:
Символическое имя флага | Описание |
TA_NOUPDATECP | Не обновлять текущую позицию после вывода текста функциями TextOut и ExtTextOut. Этот режим используется по умолчанию |
TA_UPDATECP | Обновлять текущую позицию после вывода текста функциями TextOut и ExtTextOut |
Вы можете узнать состояние флагов выравнивания, выбранных в контекст отображения, при помощи функции 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:
Параметр | Цвет |
r | Красный |
g | Зеленый |
b | Голубой |
#define GetRValue(rgb) ((BYTE)(rgb)) #define GetGValue(rgb) ((BYTE)(((WORD)(rgb)) >> 8)) #define GetBValue(rgb) ((BYTE)((rgb)>>16))
С помощью этих макрокоманд вы сможете определить значения соответственно для красной, зеленой и голубой компоненты цвета.
В любой момент времени вы можете определить текущий цвет, используемый для вывода текста. Для этого следует вызвать функцию GetTextColor:
COLORREF WINAPI GetTextColor(HDC hdc);
Для указанного при помощи единственного параметра контекста отображения функция возвращает цвет, используемый для вывода текста.