Функция DrawTextEx рисует форматированный текст в заданном прямоугольнике.
Синтаксис
int DrawTextEx( HDC hdc, // дескриптор контекста устройства LPTSTR lpchText, // текст для вывода int cchText, // длина текста для вывода LPRECT lprc, // координаты прямоугольника UINT dwDTFormat, // параметры форматирования LPDRAWTEXTPARAMS lpDTParams // дополнительные параметры форматирования ); |
Обратите внимание! на то, что для функции ANSI, буквы в кодовых страницах SBCS (набора однобайтовых символов) берут по одному байту каждая, в то время как большинство букв в кодовых страницах DBCS (набора двухбайтовых символов) берут два байта; для функции Unicode наиболее правильное определение символов Unicode (это в Основной Многоязычной плоскости - Basic Multilingual Plane(BMP)) - одно слово (WORD), в то время как в заменителях Unicode - это два слова (WORD). Если строка - с нулем в конце, этот параметр может быть равен - (минус)1, чтобы вычислять длину текста. |
[in/out] Указатель на структуру RECT, содержащую прямоугольник (в логических координатах), в котором текст, должен быть отформатирован.
Значение | Предназначение | |
---|---|---|
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 |
Windows 2000/XP: Игнорирует префиксный символ
амперсанд (&) в тексте. Буква, которая следует за ним, не будет подчеркнута, но другие мнемонически-префиксные буквы все еще обрабатываются. Например:
введенная строка: "A&bc&&d" Сравнивается с DT_NOPREFIX и DT_PREFIXONLY. |
|
DT_INTERNAL | Использует системный шрифт, чтобы рассчитать метрики текста. | |
DT_LEFT | Выравнивает текст слева. | |
DT_MODIFYSTRING | Изменяет заданную строку, чтобы согласовать отображаемый на экране текст. Это значение не имеет никакого действия, если не установлен флажок DT_END_ELLIPSIS или DT_PATH_ELLIPSIS. | |
DT_NOCLIP | Рисует без отсечения по границам. Функция DrawTextEx становится несколько быстрее, когда используется флажок DT_NOCLIP | |
DT_NOFULLWIDTHCHARBREAK | Windows 98/Me, Windows 2000/XP: Не допускает перенос строки в 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 |
Windows 2000/XP: Рисует только подчеркивание в позиции буквы, следующей за префиксным символом
амперсанта (&) ). Не выводит никакие другие символы в строке. Например,
введенная строка: "A&bc&&d" Сравнивает с флажками DT_HIDEPREFIX и DT_NOPREFIX. |
|
DT_RIGHT | Выравнивает текст справа. | |
DT_RTLREADING | Компонует порядок чтения справа налево для двунаправленного текста, когда шрифт, выбранный в hdc - шрифт еврейского или арабского языка. Заданный по умолчанию порядок чтения для всех текстов - слева направо. | |
DT_SINGLELINE | Показывает на экране текст только в единственной строке. Возвраты каретки и переводы строки не разрывают строку. | |
DT_TABSTOP |
|
|
DT_TOP | Выравнивает текст по верху прямоугольника. | |
DT_VCENTER | Центрирует текст по вертикали. Это значение используется только со значением DT_SINGLELINE. | |
DT_WORDBREAK | Делит слова. Строки автоматически делятся по словам, если слово выходит за края прямоугольника, заданного параметром lprc . Возврат каретки - последовательность перевода строки также делит строку. | |
DT_WORD_ELLIPSIS |
Обрезает любое слово, которое не вмещается в прямоугольнике и добавляет эллипсисы.
Сравнивается с флажками DT_END_ELLIPSIS и DT_PATH_ELLIPSIS. |
Если функция завершается успешно, возвращаемое значение - высота текста в логических единицах измерения. Если установлены флажки DT_VCENTER или DT_BOTTOM, возвращаемое значение - смещение в
lprc->top в основании выводимого текста.Если функция завершается с ошибкой, величина возвращаемого значения - ноль.
Функция
DrawTextEx поддерживает только шрифты, где угол, под которым печатается шрифт и ориентация оба нулевые.Текстовый режим выравнивания для контекста устройства должен включить в себя флажки TA_LEFT, TA_TOP и TA_NOUPDATECP.
Windows 95/98/Me: DrawTextExW поддерживается подпрограммой Microsoft Layer for Unicode. Чтобы использовать ее, Вы должны добавить некоторые файлы к вашему приложению, как изложено в требованиях этой подпрограммы для систем Windows 95/98/Me.
Обзор шрифты и текст, Функции, используемые шрифтами и текстом, DrawText, DRAWTEXTPARAMS
Размещение и совместимость DrawTextEx |
|
Windows. NET Server |
Да |
Windows XP |
Да |
Windows 2000 |
Да |
Windows NT |
Да |
Windows Me |
Да |
Windows 98 |
Да |
Windows 95 |
Да |
Используемая библиотека |
Gdi32.lib |
Заголовочный файл |
|
- объявлено в |
Wingdi.h |
- включено в |
Windows.h |
Unicode |
Реализуется как версии Unicode и ANSI в Windows NT /2000/XP. Поддерживается также подпрограммой Microsoft Layer for Unicode |
Замечания по платформе |
Не имеется |