Программирование для IBM OS2


Другие фукнции для рисования текста - часть 2


При помощи параметра cchText необходимо задать длину отображаемой текстовой строки, адрес которой передается через параметр lpchText. Если эта строка закрыта двоичным нулем, вместо реальной длины строки можно указать значение -1, что очень удобно. Кроме двоичного нуля, строка может быть закрыта символом возврата каретки или перевода строки.

Перед вызовом функции WinDrawText необходимо подготовить структуру типа RECTL, записав в нее координаты прямоугольной области, внутри которой будет отображаться текст. Адрес этой структуры следует передать через параметр prcl.

Если текст не помещается по длине окна, он будет обрезан.

После возвращения из функции WinDrawText содержимое указанной выше структуры изменится. В ней будет записана высота прямоугольной области, занятая текстовой строкой (если в параметре flCmd указан флаг DT_QUERYEXTENT ).

Параметры clrFore и clrBack используются только в том случае, если в параметре flCmd указан флаг DT_TEXTATTRS . С помощью этих параметров вы можете задать, соответственно, цвет текста и цвет фона, которые будут использованы при выводе.

И, наконец, с помощью параметра flCmd вы можете указывать различные флаги, объединяя их при помощи логической операции ИЛИ. Эти флаги, определяющие режим работы функции WinDrawText , перечислены ниже.

Флаг Описание
DT_LEFT Выравнивание строки по левой границе заданной прямоугольной области
DT_RIGHT Аналогично, но по правой границе
DT_TOP Аналогично, но по верхней границе
DT_BOTTOM Аналогично, но по нижней границе
DT_CENTER Центрирование строки по горизонтали
DT_VCENTER Центрирование строки по вертикали
DT_HALFTONE Отображение текста с исользованием полутонов
DT_MNEMONIC Отображение мнемонических символов
DT_QUERYEXTENT После возвращения из функции WinDrawText содержимое структуры, адрес которой передается через параметр prcl, изменяется таким образом, чтобы отражать реальную высоту нарисованной строки символов
DT_WORDBREAK Если строка символов, состоящая из отдельных слов, не помещается в окне, она будет обрезана таким образом, что в окне будут отображаться только полные слова текста
DT_EXTERNALLEADING Используется вместе с флагами DT_TOP и DT_QUERYEXTENT. Если указан этот флаг, возвращаемая в структуре prcl высота символов будет увеличена на размер выступающей части символов
DT_TEXTATTRS При отображении текста необходимо использовать цвета символов и фона, указанные в параметрах функции clrFore и clrBack
DT_ERASERECT Перед отображением текста содержимое прямоугольной области prcl будет стерто
DT_UNDERSCORE Символы текста выделяются подчеркиванием
DT_STRIKEOUT Символы текста выделяются перечеркиванием

После ввыполнения рисования функция возвращает количество нарисованных символов. При ошибке возвращается нулевое значение.

Флаги DT_LEFT, DT_CENTER и DT_RIGHT нельзя использовать вместе, точно также, как и флаги DT_TOP, DT_VCENTER и DT_BOTTOM.

Ниже мы привели пример использования функции WinDrawText для отображения текста в центре окна, размеры которого определяются при помощи функции WinQueryWindow Rect:

WinQueryWindow Rect(hWnd, &rec); WinDrawText (hps, -1, pszText, &rec, 0L, 0L, DT_WORDBREAK | DT_CENTER | DT_VCENTER | DT_TEXTATTRS | DT_ERASERECT);




Начало  Назад  Вперед



Книжный магазин