屏蔽背景刷新,在View中添加对WM_ERASEBKGND的响应,直接返回TRUE:
BOOL CTEMV1View::OnEraseBkgnd(CDC* pDC) { // TODO: 在此添加消息处理程序代码和/或调用默认值 return TRUE; //return CView::OnEraseBkgnd(pDC); }
在OnDraw函数中添加代码:
void CTEMV1View::OnDraw(CDC* pDC) { CTEMV1Doc* pDoc = GetDocument(); ASSERT_VALID(pDoc); if (!pDoc) return; // TODO: 在此处为本机数据添加绘制代码 CRect rect; GetClientRect(&rect); CDC memDC;//用于缓冲作图内存DC CBitmap bmp;//内存中承载临时图像的位图 memDC.CreateCompatibleDC(pDC);//依附窗口DC创建兼容DC bmp.CreateCompatibleBitmap(&memDC, rect.Width(), rect.Height());//创建兼容位图 memDC.SelectObject(&bmp);//将位图选择进内存DC memDC.FillSolidRect(rect, pDC->GetBkColor());//按原背景填充,否则会是黑色 pDoc->m_TemDraw.OnDraw(&memDC);//在内存DC作图,此处为自己的绘制代码 pDC->BitBlt(0, 0, rect.Width(), rect.Height(), &memDC, 0, 0, SRCCOPY);//将内存DC上的图像拷贝到前台 memDC.DeleteDC();//删除DC bmp.DeleteObject();//删除位图 }
原文:http://www.cnblogs.com/loki1412/p/5605328.html