Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Янг Майкл Дж. -> "Visual С++ 6. Полное руководство: В 2 т.(том2)" -> 33

Visual С++ 6. Полное руководство: В 2 т.(том2) - Янг Майкл Дж.

Янг Майкл Дж. Visual С++ 6. Полное руководство: В 2 т.(том2) — Бином, 2006. — 530 c.
Скачать (прямая ссылка): vicualcc2006t2.djvu
Предыдущая << 1 .. 27 28 29 30 31 32 < 33 > 34 35 36 37 38 39 .. 173 >> Следующая

6. Вызовите соответствующую функцию класса CDC для отображения текста. (Если эта функция — OnDraw, отобразите только текст, попадающий в недействительную область.)
Если пользователь еще не выбрал команду меню Font... для выбора шрифта, функция OnDraw сразу завершится, потому что текст недоступен. (Текст описывает шрифт и генерируется сразу после выбора шрифта, как описано ниже.)
Для завершения действий, описанных в пункте 1, функция OnDraw ничего не выполняет, поэтому программе передается указатель на уже созданный объект контекста устройства. Вспомните: для отображения текста или графики необходимо иметь объект контекста устройства, который связан с определенным устройством (например, окном на экране или принтером), сохраняющим информацию о шрифте и других атрибутах рисования, и предоставляет функцию для рисования графических изображений на контекстно-связанном устройстве. Если программа отображает выводимую информацию с помощью функции класса представления, отличной от функции OnDraw, создается собственный объект контекста устройства. Эта методика реализована в функции CEchoView: :OnChar в программе Echo, описанной ниже.
Чтобы задать шрифт, используемый для отображения текста (пункт 2), функция OnDraw вызывает функцию SelectObject класса CDC.
pDC->SelectObject (&pDoc->m_Font) ;
Функции SelectObject передается адрес объекта шрифта, содержащий полное описание шрифта. Как показано ниже, при выборе нового шрифта класс документа инициализирует объект его описанием. Как только объект шрифта будет передан объекту контекста устройства, весь выводимый текст отображается с использованием шрифта, описание которого соответствует сохраняемому в объекте шрифта (в противном случае используется наиболее близкий по описанию). Если шрифт не выбран, текст отображается с использованием стандартного системного шрифта System.
Примечание
Как мы увидим в гл. 19, функция CDC: : SelectObject может использоваться для выбора не только шрифта, но и других объектов, воздействующих на отображение графики.
После выбора шрифта в функцию OnDraw передается его размер (пункт 3), вызывая функцию GetTextMetrics класса CDC:
TEXTMETRIC ТМ; // . . .
pDC->GetTextMetrics (&ТМ);
LineHeight = TM.tmHeight + ТМ.tmExternalLeading;
Функция GetTextMetrics предоставляет полное описание используемого шрифта, применяемого при отображении текста. Эта информация хранится в структуре TEXTMETRIC. Как показано ниже, программа TextDemo отображает значения полей данных этой структуры для каждого выбираемого шрифта. Для определения общей высоты строки текста, функция OnDraw вычисляет сумму значений в поле tmHeight структуры TEXTMETRIC (высота самого высокого символа) и в поле tmExternalLeading (рекомендуемый межстрочный интервал). Результат сложения, хранящийся в переменной LineHeight, позже используется для вычисления начальной позиции каждой строки. На рис. 18.3 показаны другие поля структуры TEXTMETRIC, содержащие размеры символов.
trnAscent trnHeight
Рис. 18.3. Характеристики символа, обеспечиваемые функцией GetTextMetrics класса CDC
Затем функция OnDraw устанавливает два атрибута текста (пункт 4):
pDC->SetTextColor (pDoc->m_Color); PDC->SetBkMode (TRANSPARENT);
Вызов функции CDC: : SetTextColor устанавливает цвет текста, заданный при выборе шрифта, и сохраненный в переменной m__Color класса документа. Если вы не задали цвет текста, он будет отображаться черным.
Вызов функции CDC: : SetBkMode устанавливает режим фона текста, который относится к области, окружающей символы внутри символьных ячеек. При передаче параметра TRANSPARENT в функцию SetBkMode символы отображаются прямо поверх существующих в устройстве цветов без окраски фона. Если в функцию SetBkMode передать значение OPAQUE, то при отображении символов фон текста будет нарисован поверх существующих цветов на отображающей поверхности устройства (это стандартный режим фона). В режиме OPAQUE по умолчанию используется белый цвет. Вызывая функцию cdc: :SetBkColor можно установить различные цвета фона. Функция OnDraw определяет режим TRANSPARENT так, чтобы символы отображались поверх цвета фона окна представления, поэтому в программе не нужно устанавливать цвет фона. Обратите внимание: фон окна окрашивается с использованием системы цветов "Window", устанавливаемой апплетом Display панели управления Windows.
В табл. 18.1 приведены функции класса сое для установки атрибутов текста, в табл. 18.2 — функции класса cdc для получения текущей установки каждого атрибута. Заметим: функции SetPMode и GetMapMode устанавливают и обеспечивают режим отображения, воздействующий на вывод текста и графики; (см. параграф "Режим проекции" гл. 19). Более полную информацию о функциях, описанных в табл. 18.1 и 18.2, смотрите в следующих разделах справочной системы: Visual С++ Documentation, Reference, Microsoft Foundation Class Library and Templates, Microsoft Foundation Class Library, Class Library Reference, CDC.
Таблица. 18.1. Функции класса CDC для установки втрибутов текста
Функция
Назначение
SetBkColor
Предыдущая << 1 .. 27 28 29 30 31 32 < 33 > 34 35 36 37 38 39 .. 173 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100