在Onpaint函数中添加:
CDC *pDC=GetDC();
CPoint ptCenter;
CRect rect,ellipseRect;
GetClientRect(&rect);
ptCenter = rect.CenterPoint();
CDC dcMem; //用于缓冲作图的内存DC
CBitmap bmp; //内存中承载临时图象的位图
dcMem.CreateCompatibleDC(pDC); //依附窗口DC创建兼容内存DC
bmp.CreateCompatibleBitmap(pDC,rect.Width(),rect.Height());//创建兼容位图
dcMem.SelectObject(&bmp); //将位图选择进内存DC
dcMem.FillSolidRect(&rect,RGB(255,0,0));//设置背景颜色
/* for(int i=20;i>0;i--) //在内存DC上做同样的同心圆图象
{
ellipseRect.SetRect(ptCenter,ptCenter);
ellipseRect.InflateRect(i*10,i*10);
dcMem.Ellipse(ellipseRect);
}*/
// CDC* pDC=GetDC();
CPen pen,*pOldPen;
pen.CreatePen(PS_SOLID,7,RGB(255,0,0));
pOldPen=dcMem.SelectObject(&pen);
dcMem.Ellipse(400,100,600,300);//画圆
dcMem.Rectangle(470,170,530,230);//圆里的小正方形
dcMem.Rectangle(50,100,380,300);//显示区域的大正方形
dcMem.Rectangle(80,120,350,280);//显示区域的小正方形
dcMem.MoveTo(470,230);
dcMem.LineTo(400,300);
dcMem.MoveTo(400,100);
dcMem.LineTo(470,170);
dcMem.MoveTo(600,100);
dcMem.LineTo(530,170);
dcMem.MoveTo(600,300);
dcMem.LineTo(530,230);
dcMem.SetBkMode(TRANSPARENT);
dcMem.TextOut(485,130,"UP");
dcMem.TextOut(475,250,"DOWN");
dcMem.TextOut(430,200,"C");
dcMem.TextOut(550,200,"OK");
dcMem.SelectObject(pOldPen);
pen.DeleteObject();
pDC->BitBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,SRCCOPY);//将内存DC上的图象拷贝到前台
dcMem.DeleteDC(); //删除DC
bmp.DeleteObject(); //删除位图
}
其他的就是添加onbkgnd函数吗,并将内容修改为 return true;