Функция DrawText
Функция DrawText предназначена для форматированного вывода текста в прямоугольную область окна:
int WINAPI DrawText(HDC hdc, LPCSTR lpsz, int cb, RECT FAR* lprc, UINT fuFormat);
Параметр hdc определяет контекст устройства вывода. В качестве этого параметра нельзя указывать контекст метафайла (метафайлами мы займемся позже, в одном из следующих томов "Библиотеки системного программиста").
Адрес выводимой текстовой строки задается при помощи параметра lpsz. Этот параметр является дальним указателем на строку символов.
Длина строки символов задается в байтах параметром cb.
Параметр lprc является дальним указателем на структуру типа RECT, определяющую координаты верхнего левого и правого нижнего углов прямоугольной области, в которую будет выведен текст. Текст может быть выравнен и отформатирован внутри этой области в соответствии со значением, указанным параметром fuFormat.
Параметр задается как набор флагов с использованием операции логического ИЛИ:
Значение | Описание |
DT_BOTTOM | Выравнивание текста по верхней границе прямоугольника, заданного параметром lprc. Этот флаг должен использоваться в комбинации с флагом DT_SINGLELINE |
DT_CALCRECT | Определение высоты и ширины прямоугольника без вывода текста. Если указан этот флаг, функция DrawText возвращает высоту текста. Если выводимый текст состоит из нескольких строк, функция использует ширину прямоугольника, заданную параметром lprc, и расширяет базу этого прямоугольника до тех пор, пока прямоугольник не вместит в себя последнюю строку текста. Если текст состоит из одной строки, функция изменяет правую сторону прямоугольника до тех пор, пока последний символ строки не поместится в прямоугольник. В структуру, заданную параметром lprc, после возврата из функции будут записаны размеры прямоугольной области, использованной для вывода текста |
DT_CENTER | Центрирование текста по горизонтали |
DT_EXPANDTABS | Расширение символов табуляции. По умолчанию каждый символ табуляции расширяется в восемь символов |
DT_EXTERNALLEADING | Вывод текста выполняется с учетом межстрочного расстояния (external leading), определенного для выбранного шрифта разработчиком шрифтов |
DT_LEFT | Выравнивание текста по левой границе прямоугольной области, заданной параметром lprc |
DT_NOCLIP | Вывод текста выполняется без ограничения области вывода. Этот режим увеличивает скорость вывода текста |
DT_NOPREFIX | Выключение директивы подчеркивания &. По умолчанию символ & используется для того, чтобы вывести следующий символ с выделением подчеркиванием. Для вывода самого символа & его следует повторить дважды. Флаг DT_NOPREFIX выключает этот режим |
DT_RIGHT | Выравнивание текста по правой границе прямоугольной области, заданной параметром lprc |
DT_SINGLELINE | Текст состоит только из одной строки. Символы возврата каретки и перевода строки не вызывают перехода на следующую строку |
DT_TABSTOP | Установить точки останова по символам табуляции |
DT_TOP | Выравнивание текста по верхней границе прямоугольной области, заданной параметром lprc. Флаг используется только для текста, состоящего из одной строки |
DT_VCENTER | Выравнивание текста по вертикали. Флаг используется только для текста, состоящего из одной строки. Если текст состоит из одной строки, необходимо вместе с этим флагом указывать флаг DT_SINGLELINE |
DT_WORDBREAK | Выполнять свертку слов в пределах заданной параметром lprc прямоугольной области. Если слово не помещается в строке, оно может быть перенесено на следующую строку |
Если перед вызовом функции вы установили режим обновления текущей позиции (вызвав функцию SetTextAligh с параметром TA_UPDATECP), текст будет выведен начиная с текущей позиции, которая устанавливается за последним выведенным ранее символом. Свертка слов при этом не выполняется.
Функция DrawText в случае успешного завершения возвращает высоту прямоугольной области, использованной для вывода текста.