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


Функция 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
Игнорирует символ префикса амперсанда (&) в тексте. Буква, следующая ниже, не будет подчеркиваться, но другие символы mnemonic-префикса по-прежнему обрабатываются.

Пример:

входная строка: "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 интерпретирует амперсанд (&) символ mnemonic-префикс в качестве директивы, чтобы подчеркнуть символ, который следует, и двойные амперсанды (&&) символы mnemonic-префикс в качестве директивы для печати одного амперсанда. При указании 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"

ПРЕФИКСОНЛИ: "_ "

Сравнение с 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 или Юникод этой функции на основе определения константы препроцессора UNICODE. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 2000 Профессиональный [только классические приложения]
минимальный поддерживаемый сервер Windows 2000 Server [только классические приложения]
целевая платформа Виндоус
заголовка winuser.h (включая Windows.h)
библиотеки User32.lib
DLL User32.dll
набор API ext-ms-win-ntuser-misc-l1-2-0 (представлено в Windows 8.1)

См. также

DRAWTEXTPARAMS

DrawText

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

шрифтов и текста