请大家帮忙看下,在onpain函数下实现双缓冲,简单的画了条直线,但是运行不到半分钟就死机。而且直线跟没有使用双缓冲时一样,会有闪烁,请教大家修改方法
CDialog::OnPaint(); CPaintDC dc(this); // device context for painting
CDC *pDC;
pDC = new CClientDC(this);//得到窗口绘图设备对象 int width = 790;int height = 427;
CDC pDCvisual; //定义一个显示设备对象
CBitmap pBitMap; //定义一个位图对象 //建立与屏幕兼容的内存显示设备
pDCvisual.CreateCompatibleDC(NULL);
//建立与屏幕显示兼容的位图,位图的大小用窗口的大小
//CRect rect;
//GetClientRect(&rect);
pBitMap.CreateCompatibleBitmap(pDC,width,height);
//将位图选入到内存显示设备中
CBitmap *pOldBitMap = pDCvisual.SelectObject(&pBitMap);
COLORREF bkcolor;//创建背景颜色变量并获得背景变量
bkcolor = GetSysColor(COLOR_BTNFACE);
pDCvisual.FillSolidRect(0,0,width,height,bkcolor); //开始绘图
pDCvisual.MoveTo(400,20);
pDCvisual.LineTo(400,400); //将内存中的图拷贝到屏幕中进行显示
pDC->BitBlt(0,0,width,height,&pDCvisual,0,0,SRCCOPY); //绘图设备返回到原来的绘图设备
pDCvisual.SelectObject(&pOldBitMap);
pDC->SelectObject(&dc);
//绘制完成后清理虚拟
pBitMap.DeleteObject();
pDCvisual.DeleteDC();
//释放
delete pDC;