Поделиться через


Функция DrawTextExA (winuser.h)

Функция DrawTextEx рисует отформатированный текст в указанном прямоугольнике.

Синтаксис

int DrawTextExA(
  [in]      HDC              hdc,
  [in, out] LPSTR            lpchText,
  [in]      int              cchText,
  [in, out] LPRECT           lprc,
  [in]      UINT             format,
  [in]      LPDRAWTEXTPARAMS lpdtp
);

Параметры

[in] hdc

Дескриптор контекста устройства, в котором выполняется рисование.

[in, out] lpchText

Указатель на строку, содержащую текст для рисования. Если параметр cchText имеет значение -1, строка должна заканчиваться null.

Если dwDTFormat содержит DT_MODIFYSTRING, функция может добавить в эту строку до четырех дополнительных символов. Буфер, содержащий строку, должен быть достаточно большим, чтобы вместить эти дополнительные символы.

[in] cchText

Длина строки, на которую указывает lpchText. Если cchText имеет значение -1, то параметр lpchText считается указателем на строку, завершаемую null, и DrawTextEx автоматически вычисляет число символов.

[in, out] lprc

Указатель на структуру RECT , содержащую прямоугольник в логических координатах, в которых должен быть отформатирован текст.

[in] format

Параметры форматирования. Этот параметр может быть одним или несколькими из следующих значений.

Значение Значение
DT_BOTTOM
Оправдывает текст в нижней части прямоугольника. Это значение используется только с DT_SINGLELINE значением.
DT_CALCRECT
Определяет ширину и высоту прямоугольника. При наличии нескольких строк текста DrawTextEx использует ширину прямоугольника, на который указывает параметр lprc , и расширяет основание прямоугольника, чтобы привязать последнюю строку текста. Если имеется только одна строка текста, DrawTextEx изменяет правую сторону прямоугольника таким образом, чтобы он граничит с последним символом в строке. В любом случае DrawTextEx возвращает высоту отформатированного текста, но не рисует текст.
DT_CENTER
Центр текста по горизонтали в прямоугольнике.
DT_EDITCONTROL
Дублирует характеристики отображения текста многострочного элемента управления редактированием. В частности, средняя ширина символов вычисляется так же, как и для элемента управления редактированием, и функция не отображает частично видимую последнюю строку.
DT_END_ELLIPSIS
Для отображаемого текста заменяет конец строки многоточием, чтобы результат помещался в указанный прямоугольник. Любое слово (не в конце строки), которое выходит за рамки прямоугольника, усекается без многоточия. Строка не изменяется, если не указан флаг DT_MODIFYSTRING.

Сравните с DT_PATH_ELLIPSIS и DT_WORD_ELLIPSIS.

DT_EXPANDTABS
Расширяет табуляцию. По умолчанию количество символов на шаг табуляции равно восьми.
DT_EXTERNALLEADING
Включает внешнее межстрочное расстояние шрифта в высоту строки. Как правило, внешний ввод не включается в высоту строки текста.
DT_HIDEPREFIX
Игнорирует символ префикса амперсанда (&) в тексте. Следующая буква не будет подчеркиваться, но другие мнемонические префиксы по-прежнему обрабатываются.

Пример

входная строка: "A&bc&&d"

normal: "Abc&d"

DT_HIDEPREFIX: "Abc&d"

Сравните с DT_NOPREFIX и DT_PREFIXONLY.

DT_INTERNAL
Использует системный шрифт для вычисления размеров текста.
DT_LEFT
Выравнивает текст по левому краю.
DT_MODIFYSTRING
Изменяет указанную строку в соответствии с отображаемым текстом. Это значение не действует, если не указано DT_END_ELLIPSIS или DT_PATH_ELLIPSIS.
DT_NOCLIP
Рисует без обрезки. Функция DrawTextEx выполняется несколько быстрее при использовании DT_NOCLIP.
DT_NOFULLWIDTHCHARBREAK
Предотвращает разрыв строки в DBCS (двухуровневая строка символов), чтобы правило разбиения строк было эквивалентно строкам SBCS. Например, его можно использовать в окнах на корейском языке для повышения удобочитаемости меток значков. Это значение не действует, если не указано DT_WORDBREAK.
DT_NOPREFIX
Выключает обработку символов префикса. Как правило, DrawTextEx интерпретирует амперсанд (&) мнемонический префикс как директиву для подчеркивания следующего символа, а символы двойного амперсанда (&&) — как директиву для печати одного амперсанда. При указании DT_NOPREFIX эта обработка отключается. Сравнение с DT_HIDEPREFIX и DT_PREFIXONLY
DT_PATH_ELLIPSIS
Для отображаемого текста заменяет символы в середине строки многоточием, чтобы результат помещался в указанный прямоугольник. Если строка содержит символы обратной косой черты (\), DT_PATH_ELLIPSIS сохраняет как можно больше текста после последней обратной косой черты. Строка не изменяется, если не указан флаг DT_MODIFYSTRING.

Сравните с DT_END_ELLIPSIS и DT_WORD_ELLIPSIS.

DT_PREFIXONLY
Рисует только подчеркивание в позиции символа после символа амперсанда (&) префикса. Не рисует символы в строке.

Пример

входная строка: "A&bc&&d"

normal: "Abc&d"

PREFIXONLY: " _ "

Сравните с DT_NOPREFIX и DT_HIDEPREFIX.

DT_RIGHT
Выравнивает текст по правому краю.
DT_RTLREADING
Макет в порядке чтения справа налево для двунаправленного текста, если шрифт, выбранный в hdc , является ивритом или арабским шрифтом. Порядок чтения по умолчанию для всего текста — слева направо.
DT_SINGLELINE
Отображает текст только в одной строке. Возврат каретки и передача строки не прерывают линию.
DT_TABSTOP
Задает позиции табуляции. Структура DRAWTEXTPARAMS , на которую указывает параметр lpDTParams , указывает количество средних значений ширины символов на одну остановку табуляции.
DT_TOP
Оправдывает текст в верхней части прямоугольника.
DT_VCENTER
Центр текста по вертикали. Это значение используется только с DT_SINGLELINE значением.
DT_WORDBREAK
Ломает слова. Линии автоматически разбиваются между словами, если слово выходит за край прямоугольника, заданного параметром lprc . Последовательность перевода обратной строки каретки также разрывает линию.
DT_WORD_ELLIPSIS
Усекает любое слово, которое не помещается в прямоугольнике, и добавляет многоточие.

Сравнение с DT_END_ELLIPSIS и DT_PATH_ELLIPSIS.

[in] lpdtp

Указатель на структуру DRAWTEXTPARAMS , которая задает дополнительные параметры форматирования. Этот параметр может принимать значение NULL.

Возвращаемое значение

Если функция выполняется успешно, возвращаемое значение представляет собой высоту текста в логических единицах. Если указан DT_VCENTER или DT_BOTTOM, возвращаемое значение представляет собой смещение от lprc->top к нижней части нарисованного текста.

Если функция выполняется неудачно, возвращается нулевое значение.

Комментарии

Функция DrawTextEx поддерживает только шрифты, экранирование и ориентация которых равны нулю.

Режим выравнивания текста для контекста устройства должен включать флаги TA_LEFT, TA_TOP и TA_NOUPDATECP.

Примечание

Заголовок winuser.h определяет DrawTextEx как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОД. Использование псевдонима, не зависящий от кодирования, с кодом, который не является нейтральным для кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или времени выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header winuser.h (включая Windows.h)
Библиотека User32.lib
DLL User32.dll
Набор API ext-ms-win-ntuser-misc-l1-2-0 (представлено в Windows 8.1)

См. также раздел

DRAWTEXTPARAMS

Drawtext

Функции шрифта и текста

Общие сведения о шрифтах и тексте