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


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

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

Синтаксис

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

Параметры

[in] hdc

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

[in] lpString

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

[in] c

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

[out] psizl

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

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

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

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

Комментарии

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

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

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

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

  • В результате печати не учитывается межсимвольный интервал, хотя в GetTextExtentPoint32 это учитывается.
  • Результат печати учитывает обоснование, хотя GetTextExtentPoint32 игнорирует его.
Когда эта функция возвращает экстент текста, она предполагает, что текст является горизонтальным, то есть escapement всегда равен 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 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header wingdi.h (включая Windows.h)
Библиотека Gdi32.lib
DLL Gdi32.dll

См. также раздел

ExtTextOut

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

Общие сведения о шрифтах и тексте

SIZE

SetTextCharacterExtra

SetTextJustification