Функция TextOut


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

Синтаксис

BOOL TextOut(
  HDC hdc,           // дескриптор DC
  int nXStart,       // x-координата начальной позиции
  int nYStart,       // y-координата начальной позиции
  LPCTSTR lpString,  // строка символов
  int cbString       // число символов
);

Параметры

hdc

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

nXStart

[in] Устанавливает x-координату, в логических координатах, контрольной точки, которую система использует для выравнивания строки.

nYStart

[in] Устанавливает y-координату, в логических координатах, контрольной точки, которую система использует для выравнивания строки.

lpString

[in] Указатель на строку, которую нужно написать. Строка не должна завершаться нуль-терминатором, так как параметр cbString задает длину строки.

cbString

[in] Устанавливает длину строки. Для функции ANSI, это количество BYTE (байтов), а для функции Unicode, это является количеством WORD (слов)

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

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

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

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

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

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

Замечания

Хотя это и не истина, но в большинстве случаев Windows 95/98/Me поддерживает версию Unicode этой функции также, как версии ANSI.

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

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

Когда внутри функции TextOut помещается квадратные скобки пути, система создает маршрут для текста TrueType, который включает в себя каждый символ плюс его знакоместо. Созданный регион является знакоместом без текста, а не текст непосредственно. Вы можете получить этот регион, заключая контур текста TrueType, при помощи установки, перед размещением в функции TextOut квадратных скобок пути, прозрачного режима фона. Ниже следует типовой код, который демонстрирует эту процедуру.

// Получим рабочий прямоугольник окна

GetClientRect(hwnd, &r);

// УСТАНОВКА: устанавливается прозрачный режим фона,

// регион является непосредственно текстом

// SetBkMode(hdc, TRANSPARENT);

// квадратная скобка открывает путь 

BeginPath(hdc);  

// отправим какой-либо текст всем

TCHAR text[ ] = "Defenestration can be hazardous"; 
TextOut(hdc,r.left,r.top,text, ARRAYSIZE(text));
// Заключим квадратной скобкой путь
EndPath(hdc); 
// Получим регион из этого пути 
SelectClipPath(hdc, RGN_AND);
// Это создает тот же самый результат, что и SelectClipPath() 
// SelectClipRgn(hdc, PathToRegion(hdc)); 
// Заполните регион градациями серого цвета
FillRect(hdc, &r, GetStockObject(GRAY_BRUSH));

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

Код примера

Пример смотри в статье Перечисление установленных шрифтов.

Смотри также

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

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

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