На этом шаге мы приведем общие сведения о выводе данных в окно приложения.
Напомним, что вывод информации на устройство выполняется MFC-классом CDC, в котором инкапсулированы контекст устройства и набор графических функций. Кроме того, функция CView::OnDraw() получает в качестве параметра объект контекста устройства, производный от CDC, который соответствует текущему устройству вывода. Согласно такой схеме, программная реализация рисования сосредоточена в одной функции - OnDraw(), которая применяется и для отображения в окне приложения, и для предварительного просмотра, и для вывода на печатающее устройство.
Начиная с этого шага мы продолжим изучение классов, производных от CView и CDC, а также познакомимся с MFC-классами графических инструментов, которые предназначены для представления данных приложения на экране и печатающем устройстве.
Однако прежде чем приступить к изучению материала изменим функцию рисования, которая вместо "Hello, World" должна отображать в окне данные приложения.
void CMyAppView::OnDraw(CDC* pDC) { CMyAppDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); CFont aFont; aFont.CreateFont(16,0,0,0,0,0,0,0,0,0,0,0,FF_ROMAN,0); CFont *pOldFont = pDC->SelectObject(&aFont); CSize TextSize = pDC->GetTextExtent(pDoc->m_string); int nLinePos = 10; for (int i = 0; i < pDoc->m_nLines; i++) { pDC->TextOut(10, nLinePos, pDoc->m_string); nLinePos += TextSize.cy; } pDC->SelectObject(pOldFont); }
Рис.1. Результат работы приложения
Текст измененного приложения можно взять здесь (59,6 Кб).
На следующем шаге мы рассмотрим сопоставление координат.