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


Функция GetTextExtentPoint32W (wingdi.h)

Функция GetTextExtentPoint32 вычисляет ширину и высоту указанной строки текста.

Синтаксис

BOOL GetTextExtentPoint32W(
  [in]  HDC     hdc,
  [in]  LPCWSTR lpString,
  [in]  int     c,
  [out] LPSIZE  psizl
);

Параметры

[in] hdc

Дескриптор контекста устройства.

[in] lpString

Указатель на буфер, указывающий текстовую строку. Строка не должна быть завершена null, так как параметр c указывает длину строки.

[in] c

Длина строки, на которую указывает lpString.

[out] psizl

Указатель на структуру SIZE, которая получает измерения строки в логических единицах.

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

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

Если функция завершается ошибкой, возвращаемое значение равно нулю.

Замечания

Функция GetTextExtentPoint32 использует выбранный шрифт для вычисления измерений строки. Ширина и высота в логических единицах вычисляются без учета каких-либо обрезок.

Так как некоторые устройства керн символов, сумма экстентов символов в строке может не совпадать с степенью строки.

Вычисляемая ширина строки учитывает интервалы между диаграммами, заданные функцией SetTextCharacterExtra и обоснованием, заданным SetTextJustification. Это верно как для отображения на экране, так и для печати. Однако если lpDx задан в ExtTextOut, GetTextExtentPoint32 не учитывает интервалы между диаграммами или обоснованием. Кроме того, для EMF результат печати всегда учитывает интервалы между диаграммами и обоснование.

При работе с текстом, отображаемым на экране, ширина вычисляемой строки учитывает интервалы между диаграммами, заданные функцией SetTextCharacterExtra и обоснованием, заданным SetTextJustification. Однако если lpDx задан в ExtTextOut, GetTextExtentPoint32 не учитывает интервалы между диаграммами или обоснованием. Однако при печати с помощью EMF:

  • Результат печати игнорирует интервалы между диаграммами, хотя GetTextExtentPoint32 учитывает его.
  • Результат печати учитывает обоснование, хотя GetTextExtentPoint32 игнорирует его.
Когда эта функция возвращает экстент текста, предполагается, что текст является горизонтальным, то есть, что экранирование всегда равно 0. Это верно как для горизонтальных, так и вертикальных измерений текста. Даже если используется шрифт, указывающий ненулевое escapement, эта функция не использует угол при вычислении экстентов текста. Приложение должно явно преобразовать его. Однако если для графического режима задано значение GM_ADVANCED, а ориентация символа составляет 90 градусов от ориентации печати, значения, возвращаемые этой функцией, не соответствуют этому правилу. Если ориентация символа и ориентация печати соответствуют заданной строке, эта функция возвращает размеры строки в структуре SIZE как { cx : 116, cy : 18 }. Если ориентация символов и ориентация печати отличаются от 90 градусов для одной строки, эта функция возвращает размеры строки в структуре SIZE как { cx : 18, cy : 116 }.

GetTextExtentPoint32 не учитывает символы "\n" (новая строка) или "\r\n" (возврат каретки и новая строка) при вычислении высоты текстовой строки.

Примеры

Пример см. в разделе Рисование текста из разных шрифтов в одной строке.

Заметка

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

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 2000 Профессиональный [только классические приложения]
минимальный поддерживаемый сервер Windows 2000 Server [только классические приложения]
целевая платформа Виндоус
заголовка wingdi.h (включая Windows.h)
библиотеки Gdi32.lib
DLL Gdi32.dll

См. также

ExtTextOut

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

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

SIZE

SetTextCharacterExtra

SetTextJustification