Кроме изученной нами функции GpiCharString At приложения Presentation Manager могут использовать для рисования текста еще несколько функций.
Функция GpiCharString отображает строку текста с текущей позиции и имеет следующий прототип:
LONG GpiCharString ( HPS hps, // идентификатор пространства отображения LONG lCount, // размер текстовой строки PCH pchString); // адрес текстовой строки
Текущая позиция для вывода текста устанавливается функцией GpiMove . После рисования строки текста текущая позиция устанавливается в конце этой строки, так что с помощью последующих вызовов функции GpiCharString вы можете дописать строку.
Функция GpiMove имеет два параметра:
BOOL GpiMove ( HPS hps, // идентификатор пространства отображения PPOINTL pptlPoint); // новая позиция
Ниже мы привели пример совместного использования фукнций GpiMove и GpiCharString :
HPS hps; POINTL ptl;
ptl.x = 10L; ptl.y = 10L; GpiMove (hps, &ptlStart); GpiCharString (hps, 5L, "Hello"); GpiCharString (hps, 8L, ", world!");
Нетрудно заметить, что рассмотренная нами ранее функция GpiCharString At является комбинацией функций GpiMove и GpiCharString.
Для рисования текста вы также можете использовать функции GpiCharString Pos, GpiCharStringPosAt и WinDrawText . Эти функции предназначены для форматного вывода текста и допускают выбор индивидуальной позиции для каждого отображаемого символа и использование таких элементов оформления текста, как подчеркивание и перечеркивание.
Расскажем подробнее о функции WinDrawText , которая предназначена для вывод текста в прямоугольную область окна и имеет некоторые возможности форматирования. Прототип этой функции приведен ниже:
LONG WinDrawText ( HPS hps, // идентификатор пространства отображения LONG cchText, // длина текстовой строки в байтах PCH lpchText, // адрес отображаемой текстовой строки PRECTL prcl, // прямоугольная область LONG clrFore, // цвет текста LONG clrBack, // цвет фона ULONG flCmd); // флаги режима отображения текста
Параметр hps задает идентификатор пространства отображения, который необходимо получить перед использованием этой фукнции.
Флаг | Описание |
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 | Символы текста выделяются перечеркиванием |