Электронная библиотека книг Александра Фролова и Григория Фролова.
Shop2You.ru Создайте свой интернет-магазин
Библиотека
Братьев
Фроловых

Операционная система Microsoft Windows 3.1 для программиста

© Александр Фролов, Григорий Фролов
Том 11, М.: Диалог-МИФИ, 1993, 269 стр.

[Назад] [Содеожание] [Дальше]

2.7. Изменение режимов вывода текста

В контексте отображения указываются различные режимы и атрибуты, которые используются для вывода текста, такие, как способ выравнивания текста относительно указанных для вывода координат, цвет текста и цвет фона, шрифт и т. д. Программный интерфейс 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 Голубой

Для определения отдельных цветовых компонент из возвращаемого функцией 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);

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

[Назад] [Содеожание] [Дальше]