КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Вывод текста. Логические и физические шрифты.При помощи функции DrawText, имеющей следующий прототип: BOOL DrawText( HDC hdc. // дескриптор контекста устройства LPCTSTR IpString. // указатель на символьную строку int nCount, // длина текста LPRECT lpRect. // указатель на ограничивающий прямоугольник UINT uFormat // флаги форматирования текста ); можно вывести текст из строки IpString в прямоугольную область, заданную структурой типа RECT, используя метод форматирования, заданный параметром uFormat. Количество символов в выводимой строке задается параметром nCount. Если установить значение nCount в -1, то система сама определит длину строки IpString по завершающему нулевому символу. Но в этом случае программист должен позаботиться о том, чтобы строка действительно завершалась нулевым байтом. На месте последнего параметра функции задан набор флагов DT_SINGLELINE | DT_CENTER | DT_VCENTER, значения которых определяются в заголовочных файлах Windows. Флаги показывают, что текст будет выводиться в одну строку, по центру относительно горизонтали и вертикали внутри прямоугольной области, заданной четвертым параметром. Когда клиентская область становится недействительной (например, при изменении размеров окна), WndProc получает новое сообщение WM_PAINT. Обрабатывая его, программа вновь вызывает функцию GetCLientRect и поэтому рисует текст опять в центре окна. К счастью, при выводе текста приложениям не приходится напрямую общаться с физическими шрифтами. С физическими шрифтами работают шрифтовые драйверы, находящиеся в системе на одном уровне с драйверами графических устройств. В программах же используются так называемые логические шрифты. Логический шрифт представляет собой объект GDI, описывающий требования к шрифту со стороны приложения. GDI анализирует запрошенные параметры и подбирает наиболее подходящий шрифт из тех, которые зарегистрированы в системе. Объект логического шрифта находится под управлением GDI вместе с другими логическими объектами. Приложения работают с логическими шрифтами только через их дескрипторы, имеющие тип HFONT. Функция CreateFont использует для описания логического шрифта 14 параметров, поэтому она не слишком удобна в использовании. Вместо нее лучше пользоваться функцией CreateFontIndirect. Эта функция получает указатель на структуру LOGFONT, в которой упакованы эти же 14 параметров. Функция имеет следующий прототип: HFONT CreateFontIndiret(CONST LOGFONT* Iplf); После того как логический шрифт выбран в контекст устройства, приложение может получить дополнительную информацию о подобранном физическом шрифте и его метриках.
|