请大家帮忙看下,在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;
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;
解决方案 »
- 模仿QQ做个软件,收到消息存到什么容器中呢?
- MFC如何控制视频切换
- 关闭应用程序时不能进入MFC ActiveX Control 的ExitInstance()?
- 关于VC中的类对象初始化的问题
- 进程外组件(exe)怎么把消息主动返回给调用他的客户端呢?
- 大家说说Xtreme Toolkit和BCGControlBar那个好
- 有人能解决这个问题吗?分数要多少都没问题.请进来看看...
- ★help,一个菜鸟的小问题!
- 好消息:搞到c++ Primer e文第六章
- 如何使CDialog实现DOCK
- 【MFC求助】如何自定义消息处理函数发一个反射类型的消息给子控件?
- 怎么才能让VS的警告严格一点?
经过调试发现好像是这条语句导致了内存泄露,但是后面感觉都释放了啊 继续等待高手指点
改成 pBitMap.CreateCompatibleBitmap(pDCvisual,width,height); 试试
pDC = new CClientDC(this);//得到窗口绘图设备对象