Глава 25. Графический интерфейс устройства 713
При таком способе вывода одной из проблем всегда является необходимость знать заранее, сколько места в окне займет выводимая строка, чтобы она не оказалась в том месте экрана, где ее быть не должно. Метод GetTextExtent () решает эту задачу, возвращая в объект типа TSize высоту и ширину, необходимые для вывода заданной строки. Функция, приводимая ниже, выводит строку в рамке.
void BoxString(TDC& dc, const TPoint pnt, const char* szText) {
TRect rect;
TSize size = dc.GetTextExtent(szText, strlen(szText)) ;
rect.left = pnt.x — 10;
rect.top = pnt.у — 10;
rect.right = pnt.x + size.ex + 10;
rect.bottom = pnt.у + size.су + 10;
dc.Rectangle(rect);
dc.TextOut(pnt, szText) ;
)
Результат работы этой функции демонстрирует рис. 25.7.
Рис. 25.7. Вывод текста с помощью метода TextOut класса TDC
Существует несколько методов контекста устройства, позволяющих выводить текст. Вы можете продолжить совершенствовать свои знания в этой
области изучением методов DrawText (), ExtTextOut (), TabbedTextOut () И
GrayString (). Эти методы основываются на простом сервисе, который предоставляется методом TextOut () для задач выравнивания текста, расстановке знаков табуляции и им подобных.