Функция ExtTextOut


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

Синтаксис
BOOL ExtTextOut(
  HDC hdc,          // дескриптор DC
  int X,            // x-координата отправной точки
  int Y,            // y-координата отправной точки
  UINT fuOptions,   // параметры вывода текста
  CONST RECT* lprc, // произвольные размеры
  LPCTSTR lpString, // строка символов
  UINT cbCount,     // число символов в строке
  CONST INT* lpDx   // массив значений пробелов
);

Параметры

hdc
[in] Дескриптор контекста устройства.
X
[in] Устанавливает x-координату, в логических координатах, отправной точки, используемую для позиционирования строки.
Y
[in] Устанавливает y-координату, в логических координатах, отправной точки, используемую для позиционирования строки.
fuOptions
[in] Устанавливает, как использовать определяемый программой прямоугольник. Этот параметр может состоять из одного или нескольких нижеследующих значений.

 

Значение Предназначение
ETO_CLIPPED Текст будет обрезаться по прямоугольнику. 
ETO_GLYPH_INDEX Windows 95 и Windows NT 4.0 и более старшие: Массив lpString относится к массиву, возвращаемому функцией GetCharacterPlacement, и должен анализироваться непосредственно графическим интерфейсом устройств (GDI), поскольку никакая более поздняя ориентированная на конкретный язык обработка не требуется. Глиф индексируется только тогда, когда применяются шрифты TrueType, но флажок может использоваться для растровых и векторных шрифтов, чтобы указать, что в более поздней обработке языка нет необходимости, а графический интерфейс устройств должен обработать строку непосредственно. Заметьте, что все индексы глифа - 16-разрядные значения даже при том, что строка предназначена для растровых шрифтов быть массивом значений из 8 битов .

Функция ExtTextOutW, индексы глифа сохраняет в метафайле. Однако, чтобы показать на экране правильные символы, метафайл должен быть воспроизведен, используя тот же самый шрифт. Функция ExtTextOutA, индексы глифа не сохраняет. 

ETO_IGNORELANGUAGE Windows NT 4.0 и позже: Зарезервирован для системного использования. Если приложение устанавливает этот флажок, оно теряет поддержку национальных языков, и, в некоторых случаях, оно не может показать на экране никакого текста вообще. 
ETO_NUMERICSLATIN Windows 95 and Windows NT 4.0 and later: Чтобы показывать числа с использованием европейских цифр. 
ETO_NUMERICSLOCAL Windows 95 and Windows NT 4.0 and later: Чтобы показывать числа с использованием цифр, применяемых в данной местности. 
ETO_OPAQUE Для заполнения прямоугольника должен использоваться текущий цвет фона. 
ETO_PDY Windows 2000/XP: Когда он устанавливается, массив, на который указывает параметр lpDx содержит пары значений. Первое значение каждой пары, как обычно, расстояние между началами координат смежных символьных ячеек, а второе значение - смещение по вертикальному направлению шрифта. 
ETO_RTLREADING Windows 95 и Windows NT 4.0 и позже для ближневосточного  выпуска Windows: Если это значение установлено, в контексте устройства выбираются и еврейский, и арабский шрифт, строка выводится, используя порядок зеркального изображения. Если это значение не определено, строка выводится в порядке слева направо . Тот же самый результат может быть достигнут установкой значения TA_RTLREADING в параметре функции SetTextAlign. Это значение сохраняется для совместимости вниз. 
 

Значения ETO_GLYPH_ INDEX и ETO_RTLREADING не могут использоваться вместе. Поскольку ETO_GLYPH_INDEX подразумевает, что вся обработка языка была закончена, функция игнорирует флажок ETO_RTLREADING если он также установлен.

lprc
[in] Указатель на дополнительную структуру RECT, которая устанавливает размеры, в логических координатах, прямоугольника, используемого для отсечения, окраски, или обоих действий.
lpString
[in] Указатель на строку, которая устанавливает текст для вывода. Строка не должна заканчиваться нулем до тех  пор, пока параметр cbCount задает длину строки.
 
cbCount  
[in] Устанавливает длину строки. Для функции ANSI  - это число байтов (BYTE), а для функции Unicode, это является количеством слов (WORD). 
 
Обратите внимание! на то, что для функции ANSI, буквы в кодовых страницах SBCS (набора однобайтовых символов) получают  по одному байту каждая, в то время как большинство букв в кодовых страницах DBCS (набора двухбайтовых символов)   получают два байта; для функции Unicode наиболее правильное определение символов Unicode (это в Основной Многоязычной плоскости - Basic Multilingual Plane(BMP)) - одно слово (WORD), в то время как в заменителях Unicode - это два слова  (WORD)

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

lpDx
[in] Указатель на дополнительный массив значений, которые указывают расстояние между началами координат смежных символьных ячеек. Например, lpDx [i] логические логические единицы измерения отделяют начало координат символьной ячейки i и символьной ячейки i + 1.

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

Если строка рисуется, возвращаемое значение является отличным от нуля. Однако, если вызывается версия ANSI ExtTextOut с флажком ETO_GLYPH_INDEX, функция возвращает  значение ИСТИНА (TRUE)  даже при том, что функция  ничего не делает.

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

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

Замечания

В общем то не очень верно, что  Windows 95/98/Me поддерживает версию Уникода этой функции так же как ее версию ANSI.

Текущие параметры настройки выравнивания текста для заданного  контекста устройства определяются , как исходная точка, которая  используется  для расположения текста. Параметры настройки выравнивания текста извлекаются при помощи  вызова функции  GetTextAlign. Параметры настройки выравнивания текста изменяются при помощи вызова функции SetTextAlign.

Если параметр lpDx - ПУСТО (NULL), функция ExtTextOut использует заданный по умолчанию интервал между символами. Начало координат символьной ячейки и содержимое массива, на который указывает параметр lpDx определены в логических единицах измерения. Начало координат символьной ячейки задается как левый верхний угол символьной ячейки.

По умолчанию, текущая позиция не используется или модифицируется этой функцией. Однако, приложение может вызвать функцию SetTextAlign с параметром fMode установленным в значение TA_UPDATECP, чтобы разрешить системе использовать и модифицировать текущую позицию каждый раз, когда прикладная программа вызывает функцию ExtTextOut для заданного контекста устройства. Когда этот флажок устанавливается, система игнорирует параметры X и Y при последующих вызовах ExtTextOut.

Для варианта ANSI функции ExtTextOut, массив lpDx имеет то же самое число значений INT сколько имеется байтов в параметре lpString. Для букв набора двухбайтовых символов (DBCS) Вы можете распределить dx в lpDx записях между передним и последующим байтом столько, пока сумма двух байтов составляет требуемый dx. Для букв набора двухбайтовых символов (DBCS) в варианте Уникода функции ExtTextOut, каждый глиф Уникода получает единственную pdx запись.

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

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

Код примера

Пример смотри в статье Установка шрифтов текстовых строк пунктов меню.

Смотри также

Обзор шрифты и текст, Функции, используемые шрифтами и текстом, GetTextAlign, RECT, SetBkColor, SelectObject, SetTextAlign, SetTextColor

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

Windows. NET Server

Да

Windows XP

Да

Windows 2000

Да

Windows NT

Да

Windows Me

Да

Windows 98

Да

Windows 95

Да

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

Gdi32.lib

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

 

- объявлено в

Wingdi.h

- включено в

Windows.h

Unicode

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

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

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

Не имеется

 

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

Hosted by uCoz