Функция GetTextExtentExPoint


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

Синтаксис

BOOL GetTextExtentExPoint(
  HDC hdc,         // дескриптор DC
  LPCTSTR lpszStr, // строка символов
  int cchString,   // число символов
  int nMaxExtent,  // максимальная ширина отформатированной строки
  LPINT lpnFit,    // максимальное число символов
  LPINT alpDx,     // массив отдельных ширин строк
  LPSIZE lpSize    // размеры строки
);

Параметр

hdc
[in]Дескриптор контекста устройства.
lpszStr
[in] Указатель на символьную строку с нулем в конце, для которой должны извлечься протяженности.
cchString
[in] Устанавливает число символов в строке, на которую указывает lpszStr параметр. Для функции ANSI он задает длину строки в байтах (BYTE), а для функции Unicode, он определяет длину строки в словах  (WORDs). 

Обратите внимание! на то, что для функции ANSI, буквы в кодовых страницах SBCS (набора однобайтовых символов) берут  по одному байту каждый, в то время как большинство букв в кодовых страницах DBCS (набора двухбайтовых символов)   берут два байта; для функции Unicode наиболее правильное определение символов Unicode (это в Основной Многоязычной плоскости - Basic Multilingual Plane(BMP)) - одно слово (WORD), в то время как в заменителях Unicode - это два слова  (WORD).

Windows 95/98/Me: Это значение не может быть более чем 8192.

nMaxExtent
[in] Устанавливает максимальную допустимую ширину, в логических единицах измерения, отформатированной строки.
lpnFit
[out] Указатель на целое число, принимающее подсчет максимального числа символов, которые должны быть помещены в пространство, заданное параметром nMaxExtent. Когда параметр lpnFit  - ПУСТО (NULL), параметр nMaxExtent  игнорируется.
alpDx
[out] Указатель на массив целых чисел, который принимает частичные  протяженности строк. Каждый элемент в массиве дает расстояние, в логических единицах измерения, между началом строки и одного из символов, который помещается в пространстве, заданном параметром nMaxExtent . Этот массив должен иметь, по крайней мере, столько же элементов, что и количество символов, заданных параметром cchString , потому что внутри используется весь массив. Функция заполняет, массив допустимыми протяженностями для стольких же символов, сколько их задается параметром lpnFit. Любые значения в остальной части массива должны игнорироваться. Если alpDx имеет значение ПУСТО (NULL), функция не вычисляет частичные  размеры строк.

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

lpSize
[out] Указатель на структуру SIZE, которая принимает размеры строки, в логических единицах измерения. Этот параметр не может быть ПУСТО (NULL).

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

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

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

Windows NT/2000/XP: Чтобы получит дополнительные информацию об ошибке, вызовите функцию GetLastError.

Замечания

Если и параметры lpnFit и alpDx  - ПУСТО (NULL), вызов функции GetTextExtentExPoint эквивалентен вызову функции GetTextExtentPoint.

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

Обратите внимание! на то, что значения alpDx для GetTextExtentExPoint - не то же самое, что значения lpDx для ExtTextOut. Чтобы использовать значения alpDx  в lpDx, Вы должны сначала обработать их.

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

Windows 95/98/Me: GetTextExtentExPointW поддерживается подпрограммой Microsoft Layer for Unicode. Чтобы использовать ее, Вы должны добавить некоторые файлы к вашему приложению, как изложено в требованиях этой подпрограммы для систем Windows 95/98/Me.

Смотри также

Обзор шрифты и текст, Функции, используемые шрифтами и текстомGetTextExtentPoint, SIZE

Размещение и совместимость GetTextExtentExPoint

Windows. NET Server

Да

Windows XP

Да

Windows 2000

Да

Windows NT

Да версии 3.1 и выше

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