На этом шаге мы приведем правила рисования в контексте устройства.
Каркас передает функции OnDraw() объект контекста устройства, описывающий рабочую область окна приложения. В классе CDC - базовом классе для всех MFC-объектов контекста устройства - имеются функции, позволяющие изображать линии, формы и области заливки, выводить текст и обрабатывать растровые шаблоны.
Графические функции работают совместно с MFC-классами разных инструментов рисования:
Они применяют те инструменты рисования, которые выбраны (selected) в контексте устройства. Например функция CDC::Rectangle() начертит в контексте устройства прямоугольник, используя текущее перо СРеn, и сделает его заливку текущей кистью CBrush.
Ниже показан рекомендуемый порядок работы с объектами инструментов рисования.
Функция OnDraw() приложения МуАрр хорошо иллюстрирует эту процедуру. В следующих строках кода объявляется и создается новый шрифт, выбираемый затем в текущем контексте устройства:
CFont aFont; aFont.CreateFont(16,0,0,0,0,0,0,0,0,0,0,0,FF_ROMAN,0); CFont *pOldFont = pDC->SelectObject(&aFont);
Шрифт aFont используется в последующих вызовах функции CDC::TextOut() при выводе текста в контекст устройства. По завершении работы с этим шрифтом объект aFont выгружается, и восст навливается объект, сохраненный в указателе pOldFont:
pDC->SelectObject(pOldFont);
Здесь описана реализация лишь пассивного отображения данных приложения. Для разработки более сложных представлений, предусматривающих функции выбора объектов, удаления, копирования и вставки, а также поддерживающих манипуляцию экранными объектами, рисование мышью и т. д., потрудиться придется гораздо больше.
На следующем шаге мы рассмотрим организацию процесса печати.