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


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

Функция getTextExtentExtentExPoint извлекает количество символов в указанной строке, которая будет соответствовать заданному пространству и заполняет массив экстентом текста для каждого из этих символов. (Масштаб текста — это расстояние между началом пространства и символом, который будет помещаться в пространство.) Эта информация полезна для вычислений оболочки слов.

Синтаксис

BOOL GetTextExtentExPointA(
  [in]  HDC    hdc,
  [in]  LPCSTR lpszString,
  [in]  int    cchString,
  [in]  int    nMaxExtent,
  [out] LPINT  lpnFit,
  [out] LPINT  lpnDx,
  [out] LPSIZE lpSize
);

Параметры

[in] hdc

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

[in] lpszString

Указатель на строку, завершающуюся значением NULL, для которой извлекаются экстенты.

[in] cchString

Число символов в строке, на которое указывает параметр lpszStr. Для вызова ANSI указывает длину строки в байтах и для Юникода, указывающая длину строки в WORD. Обратите внимание, что для функции ANSI символы на кодовых страницах SBCS принимают один байт, а большинство символов в кодовых страницах DBCS занимают два байта; Для функции Юникода в настоящее время наиболее определенные символы Юникода (те, которые находятся в базовой многоязычной плоскости (BMP)) являются одним СЛОВОм, а суррогаты Юникода являются двумя WORD.

[in] nMaxExtent

Максимальная допустимая ширина в логических единицах форматируемой строки.

[out] lpnFit

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

[out] lpnDx

Указатель на массив целых чисел, получающих частичные строковые экстенты. Каждый элемент в массиве дает расстояние в логических единицах между началом строки и одним из символов, которые помещаются в пространство, указанное параметром nMaxExtent. Этот массив должен содержать по крайней мере столько элементов, сколько символов, указанных параметром cchString, так как весь массив используется внутренне. Функция заполняет массив допустимыми экстентами столько символов, сколько указано параметром lpnFit . Все значения в остальной части массива должны игнорироваться. Если alpDx null, функция не вычисляет частичную ширину строк.

Для сложных скриптов, где последовательность символов может быть представлена любым количеством глифов, значения в массиве alpDx до числа , указанного параметром lpnFit, совпадают с точками кода. Опять же, следует игнорировать остальные значения в массиве alpDx.

[out] lpSize

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

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

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

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

Замечания

Если оба параметра lpnFit и alpDxNULL, вызов функции getTextExtentExtentExtentExPoint эквивалентен вызову функции GetTextExtentPoint.

Для версии ANSI GetTextExtentExtentExPointмассив lpDx имеет то же количество значений INT, что и байты в lpString. Значения INT, соответствующие двум байтам символа DBCS, являются каждой степенью всего составного символа.

Обратите внимание, что значения alpDx для GetTextExtentExtentExPoint не совпадают со значениями lpDx для ExtTextOut. Чтобы использовать значения alpDx в lpDx, необходимо сначала обработать их.

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

Эта функция возвращает экстент каждого последовательного символа в строке. Если они округляются до логических единиц, вы получаете разные результаты, отличные от возвращаемых из GetCharWidth, которая возвращает ширину каждого отдельного символа, округленного до логических единиц.

Заметка

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

Требования

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

См. также

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

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

GetTextExtentPoint

SIZE