Функция 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 до числа , указанного параметром lpnFit, совпадают с точками кода. Опять же, следует игнорировать остальные значения в массиве
[out] lpSize
Указатель на структуру SIZE, которая получает измерения строки в логических единицах. Этот параметр не может быть значение NULL.
Возвращаемое значение
Если функция выполнена успешно, возвращаемое значение ненулевое.
Если функция завершается ошибкой, возвращаемое значение равно нулю.
Замечания
Если оба параметра lpnFit и alpDxNULL, вызов функции getTextExtentExtentExtentExPoint эквивалентен вызову функции GetTextExtentPoint.
Для версии ANSI
Обратите внимание, что значения 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 |
См. также
шрифтов и текста