vc对话框双缓存
在对话框的OnPaint()事件中实现,如下代码,但还是闪烁,请高手指点:
CRect rect;
GetWindowRect(&rect); // 获取窗口大小
nWidth = rect.Width();
nHeight = rect.Height();
// 创建兼容内存及位图
CDC MemDC;
CDC* pMemDC;
CBitmap MemBmp;
MemDC.CreateCompatibleDC(&dc);
pMemDC = new CDC;
pMemDC->Attach(MemDC.m_hDC);
MemBmp.CreateCompatibleBitmap(&dc,nWidth,nHeight);
CBitmap *pOldBmp = pMemDC->SelectObject(&MemBmp);
//绘制
m_Address.Format("坐标为:%d,%d",m_ptPoint.x,m_ptPoint.y);
pMemDC->TextOut(m_ptPoint.x,m_ptPoint.y,m_Address);
//复制
dc.BitBlt(0,0,nWidth,nHeight,pMemDC,0,0, SRCCOPY);
pMemDC->SelectObject(pOldBmp);
pMemDC->DeleteDC();
pOldBmp->DeleteObject();
MemBmp.DeleteObject();