GDI内存泄露

unwritewolf 2010-04-21 09:13:56
void CScreenView::OnDraw(CDC* pDC)
{
CDocument* pDoc = GetDocument();
// TODO: 在此添加绘制代码
CDC MemDC; //首先定义一个显示设备对象
CRect rect;
GetClientRect(&rect);

MemDC.CreateCompatibleDC(pDC);

BITMAPINFO *lpbi=(BITMAPINFO *)src;

tagBITMAPINFOHEADER* info_header=(BITMAPINFOHEADER *)lpbi;

HBITMAP hBitmap = CreateDIBitmap(pDC->m_hDC,info_header,CBM_INIT,src+screen.BmpInfoSize,lpbi,DIB_RGB_COLORS);

SelectObject(MemDC,hBitmap);

pDC->StretchBlt(rect.left,rect.top,rect.Width(),rect.Height(),&MemDC,rect.left,rect.top,info_header->biWidth,info_header->biHeight,SRCCOPY);


// CloseHandle(hBitmap);
MemDC.DeleteDC();
}

谁能帮我看看,图像绘制一两分钟后,就不发再绘制了!~~~~~急,内存没有上升
...全文
77 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
unwritewolf 2010-04-21
  • 打赏
  • 举报
回复
OK了!!新手,不熟悉API,哈哈!谢谢~~~~
向立天 2010-04-21
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 unwritewolf 的回复:]
嘻嘻,又是你哈!!!
[/Quote]

呵呵
昨天搞错了
不应该是CloseHandle(hBitmap);
unwritewolf 2010-04-21
  • 打赏
  • 举报
回复
嘻嘻,又是你哈!!!
向立天 2010-04-21
  • 打赏
  • 举报
回复
// CloseHandle(hBitmap);
======
这句改成DeleteObject(hBitmap);
unwritewolf 2010-04-21
  • 打赏
  • 举报
回复
g了一下好像是GDI资源耗尽~~~~~谁能指点一下~~
unwritewolf 2010-04-21
  • 打赏
  • 举报
回复
使用双缓冲,从(BITMAPINFO *)src绘制。

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧