|
Программирование >> Процедурные приложения
Конструктор и деструктор класса CGraphview CGraphview: : CGraphview() { TODO: здесь добавьте код конструктора CGraphView::~CGraphView() BOOL CGraphView::PreCreateWindow(CREATESTRUCT Ses) TODO: здесь можно модифицировать класс окна, изменяя поля структуры cs. return CView::PreCreateWindow(cs); }
Отображениедокумента void CGraphview::OnDraw(CDC* pDC) CGraphDoc* pDoc = GetDocument(); ASSERT VALID(pDoc); TODO: здесь добавьте код отображения }
Диагностика класса CGraphView #ifdef DEBUG void CGraphView::AssertValid() const CView::AssertValid(); } void CGraphview: : Dump (CDumpContext Sdc) const { CView: : Dump (dc); } CGraphDoc* CGraphview: : GetDocument () отладочнаяверсия( ASSERT (m pDocument->IsKindOf (RUNTIME CLASS (CGraphDoc) ) ) ; return (CGraphDoc*)m pDocument; } #endif DEBUG
Обработчикисообщенийкласса CGraphview void CGraphview: :OnPaint () { CPaintDCdc(this); контекст устройства для рисования TODO: здесь добавьте собственный код обработки сообщения Не вызывайте метод CView: :OnPaint () Обычно схема сообщений остается пустой, но, если вы помните, мы использовали мастер классов для добавления обработчика on wm paint. Конструктор и деструктор остались пустыми. В функции OnDraw( ) запрашивается указатель pDoc на данные, содержащиеся в документе. Для функций AssertValid() и Dump()вызываются их аналоги из базового класса. Вывод данных в окно На первом этапе разработки приложения Graph с помощью мастеров Арр Wizardи ClassWizard был создан интерфейс приложения, ориентированный на работу с одним документом. С помощью мастера классов в класс CGraphview был добавлен обработчик сообщений WM PAINT. Код для функции OnPaint() мы возьмем из программы GDI.CPP, рассматривавшейся в предыдущей главе. Обработчики сообщений класса CGraphView voidCGraphView::OnPaint() static DWORD dwColor[9]={ RGB(0,0, 0), черный RGB(255,0, 0), красный RGB(0,255,0), зеленый RGB(0,0, 255), синий RGB(255, 255, 0), желтый RGB(255,0, 255), пурпурный RGB(0,255, 255), голубой RGB (127,12V,127), серый RGB (255,255, 255)}; . белый int xcoord; POINT polylpts[4], polygpts[5]; CBrush newbrush; CBrush* oldbrush; CPen newpen; CPen* oldpen; CPaintDCdc(this); контекст устройства для рисования рисование эллипса и заливка его красн1м цветом newpen.CreatePen(PS SOLID, 1, dwColor[1]); oldpen = dc.SelectObject(Sriewpen); newbrush.CreateSolidBrush(dwColor[1]) ; oldbrush = dc.SelectObject(Snewbrush); dc.Ellipse(275,300, 200, 250); dc.TextOut(220,265, ellipse ,7); dc.SelectObject(oldbrush) ; newbrush.DeleteObject() ; dc.SelectObject(oldpen) ; newpen.DeleteObject(); рисование круга и заливка его синим цветом newpen.CreatePen(PS SOLID, 1, dwColor[3]); oldpen = dc.SelectObject(snewpen) ; newbrush.CreateSolidBrush(dwColor[3]) ; oldbrush = dc.SelectObject(Snewbrush); dc.Ellipse(375,75, 525, 225); dc.TextOut(435,190, circle ,6) ; dc.SelectObject(oldbrush) ; newbrush.DeleteObject(); dc.SelectObject(oldpen); newpen. DeleteObj ect (); рисование нескольких зеленых точек for(xcoord = 400; xcoord < 450; xcoord += 5) dc.SetPixel(xcoord, 350, OL); dc.TextOut(460,345, <-pixels ,9); рисование толстой черной диагональной линии newpen.CreatePen(PS SOLID, 6, dwColor[0]); oldpen = dc.SelectObject (Snewpen); dc.MoveTo(20, 20); dc.LineTo(100, 100); dc.TextOut(60,20, <-diagonal line ,16); dc.SelectObject(oldpen); newpen.DeleteObject(); рисование синей дуги newpen.CreatePen(PS DASH, 1, dwColor[3]); oldpen = dc.SelectObject(Snewpen); dc.Arc(25,125, 175, 225, 175, 225, 100, 125); dc.TextOut(50,150, small arc -> ,12); dc.SelectObject(oldpen); newpen.DeleteObject(); рисование зеленого сегмента с толстым контуром newpen.CreatePen(PS SOLID, 8, dwColor[2]); oldpen = dc.SelectObject(Snewpen); dc.Chord(125, 125, 275, 225, 275, 225, 200, 125); 370 dc.TextOut(280,150, <-chord , 8); dc.SelectObject(oldpen); newpen.DeleteObject(); рисование черного сектора и заливка его зеленым цветом newpen.CreatePen(PS SOLID, I, dwColor[0]); oldpen = dc.SelectObject(Snewpen); newbrush.CreateSolidBrush(dwColor[2]); oldbrush = dc.SelectObject(Snewbrush); dc.Pie(200,0, 300, 100, 200, 50, 250, 100); dc.TextOut (260,80, <-pie wedge , 12); dc.SelectObject(oldbrush); newbrush.DeleteObject(); dc.SelectObject(oldpen); newpen.DeleteObject(); рисование черного прямоугольника и заливка его серым цветом newbrush.CreateSolidBrush(dwColor[7]); oldbrush = dc.SelectObject(Snewbrush); dc.Rectangle(25,300, 150, 375); dc.TextOut(50,325, rectangle , 9); dc.SelectObject(oldbrush); newbrush.DeleteObject(); рисование черного закругленного прямоугольника и заливка его синим цветом newbrush.CreateHatchBrush(HS CROSS, dwColor[3]); oldbrush = dc.SelectObject(Snewbrush); dc.RoundRect(35 0, 250, 400, 2 90,20, 20); dc.TextOut(410,270, <-rounded rectangle , 20); dc.SelectObject(oldbrush); newbrush.DeleteObject() ; рисование толстой ломаной линии пурпурного цвета newpen.CreatePen(PS SOLID, 3, dwColor[5]); oldpen=dc.SelectObject(Snewpen); polylpts[0].x = 10; polylpts[0].у = 30; polylpts[1].x = 10; polylptstl]-y = 100; polylpts[2].x = 50; polylpts[2].y = 100; polylpts[3].x = 10; polylpts[3].y = 30; dc.Polyline(polylpts, 4); dc.TextOut(10,110, polyline ,8) ; dc.SelectObject(oldpen) ; newpen.DeleteObject() ; рисование голубого многоугольника изаливка его диагональной желтой штриховкой newpen.CreatePen(PS SOLID, 4, dwColor[6]); oldpen = dc.SelectObject(Snewpen); newbrush.CreateHatchBrush(HS FDIAGONAL, dwColor[4]); oldbrush = dc.SelectObject(Snewbrush); } polygpts[0].x = 40; polygpts[0].y = 200; polygptstl].x = 100 polygpts[l].y = 270
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |