(1)新建单文档工程Plot

(2)为工程添加Max.h。代码如下:class Max
{
public:
 Max(double,double,double,double);
 double Max4();
 
 ~Max(void);
private:
 double x1,x2,x3,x4;
 double Max2(double,double);

};

Max.cpp的代码如下:

#include "Max.h"

Max::Max(double a,double b,double c,double d)
{
 x1=a;x2=b;x3=c;x4=d;
}

double Max::Max2(double a,double b)
{
 if(a>=b)return a;
 else return b;
}
double Max::Max4()
{
 return Max2(Max2(x1,x2),Max2(x3,x4));
}

Max::~Max(void)
{
}
 

(3)在CPlotDoc.cpp中包含Max.h。

#include“Max.h”

(4)为CPlotDoc类添加一个公有void类型的函数Find和一个公有int类型数据成员m_num[5],使用Max类产生对象并计算他们的最大值,将他们转换成int型,并存入m_num.

void CPlotDoc::Find()
{
 Max a(110.5,120.8,110,68);
 Max b(130,256.5,90,200);
 Max c(125,406.8,350,300);
 Max d(120,356.8,300,280.5);
 Max e(102,256.8,120,105);
 m_num[0]=(int)a.Max4();
 m_num[1]=(int)b.Max4();
 m_num[2]=(int)c.Max4();
 m_num[3]=(int)d.Max4();
 m_num[4]=(int)e.Max4();
}

在类视图中单击CPlotDoc的OnNewDocument()函数,增加调用语句,准备数据。

BOOL CPlotDoc::OnNewDocument()
{
 if (!CDocument::OnNewDocument())
  return FALSE;

 // TODO: 在此添加重新初始化代码
 if(!CDocument::OnNewDocument())
  return FALSE;
 Find();
 // (SDI 文档将重用该文档)

 return TRUE;
}
(6)在视图类中完成图形的绘制。

void CPlotView::OnDraw(CDC* pDC)
{
 CPlotDoc* pDoc = GetDocument();
 ASSERT_VALID(pDoc);
 

 // TODO: 在此处为本机数据添加绘制代码
 pDC->SetMapMode(MM_ISOTROPIC);
 pDC->SetViewportOrg(50,250);
 pDC->MoveTo(0,0);
 pDC->LineTo(1100,0);
 pDC->MoveTo(0,0);
 pDC->LineTo(0,600);
 int width=40;
 char ch='A';
 CBrush brush;
 brush.CreateSolidBrush(RGB(250,0,0));
 pDC->SelectObject(brush);
 for(int i=1;i<6;i++,ch++)
 {
  pDC->Rectangle(200*i,0,200*i+width,pDoc->m_num[i-1]);
  pDC->TextOut(200*i+10,-10,(CString)ch);
 }

CFont font;
font.CreateFontA(0,0,0,0,800,0,0,0,OEM_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH,"楷体");
pDC->SelectObject(font);
pDC->TextOutA(200,550,"某某公司分销点月销售量柱状图");
}

如此就完成了柱形图的绘制。