Глава 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.

h07131.jpg

Рис. 25.7. Вывод текста с помощью метода TextOut класса TDC

Существует несколько методов контекста устройства, позволяющих выводить текст. Вы можете продолжить совершенствовать свои знания в этой

области изучением методов DrawText (), ExtTextOut (), TabbedTextOut () И

GrayString (). Эти методы основываются на простом сервисе, который предоставляется методом TextOut () для задач выравнивания текста, расстановке знаков табуляции и им подобных.