Функция DrawTextEx


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

Синтаксис

int DrawTextEx(
  HDC hdc,                     // дескриптор контекста устройства
  LPTSTR lpchText,             // текст для вывода
  int cchText,                 // длина текста для вывода
  LPRECT lprc,                 // координаты прямоугольника
  UINT dwDTFormat,             // параметры форматирования
  LPDRAWTEXTPARAMS lpDTParams  // дополнительные параметры форматирования
);

Параметры

hdc
[in] Дескриптор контекста устройства, в котором происходит прорисовка.
lpchText
[in/out] Указатель на строку, которая содержит текст для рисования. Строка должна быть с нулевым символом в конце, если параметр cchText -- (минус)1.
Если параметр dwDTFormat включает в себя флажок DT_MODIFYSTRING, функция может добавлять четыре дополнительных символа в этой строке. Буфер, содержащий строку должен быть достаточно большой, чтобы разместить эти дополнительные символы.
 
cchText
[in] Устанавливает длину строки, заданную параметром lpchText . Для функции ANSI  - это число байтов (BYTE), а для функции Unicode, это является количеством слов (WORD). 
Обратите внимание! на то, что для функции ANSI, буквы в кодовых страницах SBCS (набора однобайтовых символов) берут  по одному байту каждая, в то время как большинство букв в кодовых страницах DBCS (набора двухбайтовых символов)   берут два байта; для функции Unicode наиболее правильное определение символов Unicode (это в Основной Многоязычной плоскости - Basic Multilingual Plane(BMP)) - одно слово (WORD), в то время как в заменителях Unicode - это два слова  (WORD). Если строка - с нулем в конце, этот параметр может быть  равен - (минус)1, чтобы вычислять длину текста.
lprc

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

 
dwDTFormat
[in] Определяет параметры форматирования. Этот параметр может быть один или несколько нижеследующих значений.
 
Значение Предназначение
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"
обычно:                    "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 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"
обычно:                    "Abc&d"
DT_PREFIXONLY:     " _   "

Сравнивает с флажками DT_HIDEPREFIX и DT_NOPREFIX.

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.

lpDTParams
[in] Указатель на структуру DRAWTEXTPARAMS, которая устанавливает дополнительные параметры форматирования. Этот параметр может иметь значение ПУСТО (NULL).

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

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

Замечания по платформе

Не имеется

 

Назад в оглавление
На главную страницу
На оглавление справки

Hosted by uCoz