На этом шаге мы приведем общие сведения о выводе данных в окно приложения.
Напомним, что вывод информации на устройство выполняется MFC-классом CDC, в котором инкапсулированы контекст
устройства и набор графических функций. Кроме того, функция CView::OnDraw() получает в качестве параметра
объект контекста устройства, производный от CDC, который соответствует текущему устройству вывода.
Согласно такой схеме, программная реализация рисования сосредоточена в одной функции - OnDraw(), которая
применяется и для отображения в окне приложения, и для предварительного просмотра, и для вывода на печатающее устройство.
Начиная с этого шага мы продолжим изучение классов, производных от CView и CDC, а также
познакомимся с MFC-классами графических инструментов, которые предназначены для представления
данных приложения на экране и печатающем устройстве.
Однако прежде чем приступить к изучению материала изменим функцию рисования, которая вместо "Hello, World"
должна отображать в окне данные приложения.
- Модификация функции OnDraw().
- Откройте проект MyApp.
- Найдите Функцию CMyAppView::OnDraw() и замените прежний текст следующим кодом:
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:
Рис.1. Результат работы приложения - В меню Data выберите Edit.
- В поле Line text диалогового окна Edit Document Data можете задать любую строку,
а в поле Number of lines - количество повторений. - Щелкните OK, чтобы закрыть диалоговое окно. Введенный текст должен появиться заданное число раз.
Текст измененного приложения можно взять здесь (59,6 Кб).
На следующем шаге мы рассмотрим сопоставление координат.