Шаг 790 - CDC::DrawText.

Автор Каев А. Г.
virtual int DrawText( LPCTSTR lpszString, int nCount, LPRECT lpRect, UINT nFormat );
int DrawText( const CString& str, LPRECT lpRect, UINT nFormat );

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

Параметры
lpszString
Указатель на строку, которая будет выведена. Если nCount -1, строка должна быть с нулевым символом в конце.
nCount
Определяет количество символов в строке. Если nCount -1, то lpszString принят, чтобы быть длинным указателем на строку с нулевым символом в конце, и DrawText вычисляет символьный счет автоматически.
lpRect
Указатель на структуру RECT или объект CRect, который содержит прямоугольник (в логических координатах) в котором текст должен форматироваться.
str
Объект CString, который содержит определенные символы, которые будут выведены.
nFormat
Определяет метод форматирования текста. Это может быть любая комбинация следующих значений (объединенных поразрядным OR оператором):

DT_BOTTOM 				Определяет выровненный по нижней части текст. Это значение должно быть объединено с DT_SINGLELINE.
DT_CALCRECT 				Определяет ширину и высоту прямоугольника. Если имеются многократные строки текста, 
					DrawText использует ширину прямоугольника, указанного на lpRect и расширит прямоугольника 
					к последней строки текста. Если имеется только одна строка текста, DrawText изменит правую 
					сторону прямоугольника так, чтобы это ограничило последний символ в строке. 
					В любом случае, DrawText возвращает высоту форматируемого текста, но не выводит текст.
DT_CENTER 				Выравнивает по центру текст горизонтально.
DT_END_ELLIPSIS или DT_PATH_ELLIPSIS 	Заменяет часть данной строки с эллипсами, в случае необходимости, так, чтобы результат 
					находился в определенном прямоугольнике. Данная строка не изменяется, если флажок 
					DT_MODIFYSTRING не определен. 
					Вы можете определять DT_END_ELLIPSIS, чтобы заменить символы в конце строки, или 
					DT_PATH_ELLIPSIS, чтобы заменить символы в середине строки. Если строка содержит 
					наклонную черту влево (\), символы, DT_PATH_ELLIPSIS сохраняют в максимально возможной степени 
					текста после последней наклонной черты влево.
DT_EXPANDTABS 				Разворачивает символы табуляции. Заданное по умолчанию число символов  позиций табуляции - восемь.
DT_EXTERNALLEADING 			Включает внешнюю подачу шрифта в высоте строки. Обычно, внешняя подача не включена в высоту строки текста.
DT_LEFT 					Выравнивает влево текст.
DT_MODIFYSTRING 				Изменяет данную строку, чтобы согласовать к отображаемому тексту. Этот флажок не имеет никакого 
					эффекта, если DT_END_ELLIPSIS или флажок DT_PATH_ELLIPSIS не определен. 
					Обратите внимание, что некоторые комбинации флажков uFormat могут заставлять переданную строку изменяться. 
					Использование DT_MODIFYSTRING или с DT_END_ELLIPSIS или DT_PATH_ELLIPSIS может заставлять строку изменяться, 
					вызывая  исключение в отмене CString.
DT_NOCLIP 				Выводит без отсечения. DrawText несколько быстрее, когда DT_NOCLIP используется.
DT_NOPREFIX 				Выключает обработку префиксных символов. Обычно, DrawText интерпретирует символ амперсанда (и) 
					мнемонической схемы - префиксный символ как директива, чтобы подчеркнуть символ, который следует, 
					и (& &) мнемонически схема - префиксные символы с двумя символами амперсанда как директива, 
					чтобы печатать одиночный символ амперсанда. Определяя DT_NOPREFIX, эта обработка выключена.
DT_RIGHT 					Выравнивает вправо текст.
DT_SINGLELINE 				Определяет одиночную строку только. Возвраты каретки и переводы строки не разрывают строку.
DT_TABSTOP 				Устанавливает табуляторы. Старший байт nFormat - число символов для каждой позиции табуляции. 
					Заданное по умолчанию число символов в позиции табуляции - восемь.
DT_TOP 					Определяет выровненный по верху текст (одиночная строка только).
DT_VCENTER 				Определяет вертикально центрированный текст (одиночная строка только).
DT_WORDBREAK 				Определяет слово - breaking. Строки были бы автоматически разбиты между словами, если слово 
					простиралось бы дальше края прямоугольника, определенного lpRect. Последовательность переводов 
					строки возвратов каретки также разорвет строку. 

Замечания
Вызовите эту функцию, чтобы форматировать текст в данном прямоугольнике. Это форматирует текст, разворачивая позиции табуляции в соответствующие пробелы, выравнивая текст налево, право, или центр данного прямоугольника, и разрывая текст в строки, которые приспосабливаются внутри данного прямоугольника. Тип форматирования определен nFormat.
Эта функция использует контекст устройства, выбранный шрифт, текстовый цвет, и фоновый цвет, чтобы вывести текст. Если формат DT_NOCLIP не используется, DrawText отсекает текст так, чтобы текст не появился снаружи данного прямоугольника. Все форматирование принято, чтобы иметь многократные строки, если формат DT_SINGLELINE не дан.
Если выбранный шрифт слишком большой для определенного прямоугольника, DrawText функция не пытается заменять меньшим шрифтом.
Если флажок DT_CALCRECT определен, прямоугольник, определенный lpRect будет модифицироваться, чтобы отразить ширину и высоту, необходимую, чтобы вывести текст.
Если TA_UPDATECP флажок выравнивания текста был установлен (см. CDC::SetTextAlign), DrawText отобразит текст, начинающийся в текущей позиции, скорее чем налево от данного прямоугольника. DrawText не будет переносить по словам текст, когда флажок TA_UPDATECP был установлен (то есть флажок DT_WORDBREAK не будет иметь никакого эффекта).

Hosted by uCoz