Программирование >>  Процедурные приложения 

1 ... 120 121 122 [ 123 ] 124 125 126 ... 150


Конструктор и деструктор класса 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



1 ... 120 121 122 [ 123 ] 124 125 126 ... 150

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика