Функция GetTextExtentPoint32


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

Синтаксис

BOOL GetTextExtentPoint32(
  HDC hdc,           // дескриптор DC
  LPCTSTR lpString,  // строка текста
  int cbString,      // символы в строке
  LPSIZE lpSize      // размер строки
);

Параметры

hdc
[in] Дескриптор контекста устройства.
lpString
[in] Указатель на буфер, который задает текстовую строку. Строка не должна быть закончена нулем, потому что параметр cbString  устанавливает длину строки.
cbString
[in] Устанавливает длину буфера lpString. Для функции ANSI это - итоговое число байтов (BYTE), а для функции Unicode это - итоговое число слов (WORD)

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

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

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

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

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

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

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

Замечания

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

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

Windows 95/98/Me: Для совместимости с Windows 3.1, функция GetTextExtentPoint32 прибавляет дополнительный пиксель при моделировании полужирных шрифтов . Однако, полужирный шрифт Tahoma  не моделируется, так что он не имеет дополнительного пикселя. Чтобы исправить  дополнительным пикселем моделирование полужирного шрифта , уменьшите  длину каждой подстроки для передачи в GetTextExtentPoint32 на один пиксель и добавьте дополнительный пиксель для всей строки.

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

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

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

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

Код примера

Пример смотри в статье Написание текста различными шрифтами в одной и той же строке.

Смотри также

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

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

Windows. NET Server

Да

Windows XP

Да

Windows 2000

Да

Windows NT

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

Windows Me

Да

Windows 98

Да

Windows 95

Да

Используемая библиотека

Gdi32.lib

Заголовочный файл

 

- объявлено в

Wingdi.h

- включено в

Windows.h

Unicode

Реализуется как версии Unicode и  ANSI во всех платформах.

Поддерживается также подпрограммой Microsoft Layer for Unicode

Замечания по платформе

Не имеется

 

Назад в оглавление
На главную страницу
На оглавление справки

Hosted by uCoz