Функция 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_SINGLELINE. |
|
Определяет ширину и высоту прямоугольника. Если имеется несколько строк текста, DrawTextEx использует ширину прямоугольника, на который указывает параметр lprc , и расширяет основу прямоугольника, чтобы привязать последнюю строку текста. Если имеется только одна строка текста, DrawTextEx изменяет правую сторону прямоугольника таким образом, чтобы он привязыв к последнему символу в строке. В любом случае DrawTextEx возвращает высоту отформатированного текста, но не рисует текст. |
|
Центрируется текст по горизонтали в прямоугольнике. |
|
Дублирует характеристики отображения текста многострочного элемента управления редактирования. В частности, средняя ширина символов вычисляется таким же образом, как для элемента управления редактированием, и функция не отображает частично видимую последнюю строку. |
|
Для отображаемого текста заменяет конец строки многоточием, чтобы результат помещался в указанный прямоугольник. Любое слово (не в конце строки), которое выходит за пределы прямоугольника, усечено без многоточия. Строка не изменяется, если не указан флаг DT_MODIFYSTRING.
Сравнение с DT_PATH_ELLIPSIS и DT_WORD_ELLIPSIS. |
|
Расширяет табуляцию. По умолчанию количество символов на шаг табуляции равно восьми. |
|
Включает внешнее межстрочное расстояние шрифта в высоту строки. Как правило, внешняя ведущая не включается в высоту строки текста. |
|
Игнорирует символ префикса амперсанда (&) в тексте. Буква, следующая за ней, не будет подчеркнута, но все еще обрабатываются другие символы mnemonic-prefix.
Пример входная строка: "A&bc&&d" normal: "Abc&d" DT_HIDEPREFIX: "Abc&d" Сравнение с DT_NOPREFIX и DT_PREFIXONLY. |
|
Использует системный шрифт для вычисления размеров текста. |
|
Выравнивает текст слева. |
|
Изменяет указанную строку в соответствии с отображаемым текстом. Это значение не действует, если не указано DT_END_ELLIPSIS или DT_PATH_ELLIPSIS. |
|
Рисует без обрезки. Метод DrawTextEx несколько быстрее при использовании DT_NOCLIP. |
|
Предотвращает разрыв строки в DBCS (двухуровневой строке символов), чтобы правило разбиения строк эквивалентно строкам SBCS. Например, это можно использовать в корейских окнах для более удобочитаемости меток значков. Это значение не действует, если не указано DT_WORDBREAK. |
|
Выключает обработку символов префикса. Как правило, DrawTextEx интерпретирует амперсанд (&) символ mnemonic-prefix как директиву, чтобы подчеркнуть следующий символ, и символы двойного амперсанда (&&) mnemonic-prefix в качестве директивы для печати одного амперсанда. Указав DT_NOPREFIX, эта обработка отключается. Сравнение с DT_HIDEPREFIX и DT_PREFIXONLY |
|
Для отображаемого текста заменяет символы в середине строки многоточием, чтобы результат помещался в указанный прямоугольник. Если строка содержит символы обратной косой черты (\\), DT_PATH_ELLIPSIS сохраняет текст как можно больше после последней обратной косой черты. Строка не изменяется, если не указан флаг DT_MODIFYSTRING.
Сравнение с DT_END_ELLIPSIS и DT_WORD_ELLIPSIS. |
|
Рисует только подчеркивание в позиции символа после амперсанда (&) префикса. Не рисует ни одного символа в строке.
Пример входная строка: "A&bc&&d" normal: "Abc&d" PREFIXONLY: " _ " Сравнение с DT_NOPREFIX и DT_HIDEPREFIX. |
|
Выравнивает текст справа. |
|
Макет в порядке чтения справа налево для двунаправленного текста, если шрифт, выбранный в hdc , является ивритом или арабским шрифтом. Порядок чтения по умолчанию для всего текста слева направо. |
|
Отображает текст только в одной строке. Возврат каретки и каналы линий не прерывают линию. |
|
Задает позиции табуляции. Структура DRAWTEXTPARAMS , на которую указывает параметр lpDTParams , указывает количество средних ширин символов на остановку табуляции. |
|
Оправдывает текст в верхней части прямоугольника. |
|
Центрируется текст по вертикали. Это значение используется только со значением DT_SINGLELINE. |
|
Прерывает слова. Линии автоматически разбиваются между словами, если слово выходит за край прямоугольника, указанного параметром lprc . Последовательность канала возврата каретки также нарушает линию. |
|
Усекает любое слово, которое не помещается в прямоугольник и добавляет многоточие.
Сравнение с 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) |