[求助]MFC对话框窗体显示背景图片的代码,是否有内存泄漏?
//加载背景图片 Begin CDC *pDC = GetDC(); CBitmap Bitmap; Bitmap.LoadBitmap(IDB_BITMAP1);//将资源中的位图装入内存 CDC MemDC; MemDC.CreateCompatibleDC(pDC);//创建内存设备环境 CBitmap *OldBitmap=MemDC.SelectObject(&Bitmap); BITMAP bm; //创建BITMAP 结构变量 Bitmap.GetBitmap(&bm); //获取位图信息 //pDC->BitBlt(0,0,bm.bmWidth,bm.bmHeight,&MemDC,0,0,SRCCOPY); //显示位图 pDC->StretchBlt(0,0,bm.bmWidth+30,bm.bmHeight+40,&MemDC,0,0,bm.bmWidth,bm.bmHeight,SRCCOPY); OldBitmap->DeleteObject(); //恢复设备环境 ReleaseDC(pDC); //加载背景图片 END
HDC CDC::Detach(){ HDC hDC = m_hDC; if (hDC != NULL) { CHandleMap* pMap = afxMapHDC(); // don't create if not exist if (pMap != NULL) pMap->RemoveHandle(m_hDC); } ReleaseAttribDC(); m_hDC = NULL; return hDC;}BOOL CDC::DeleteDC(){ if (m_hDC == NULL) return FALSE; return ::DeleteDC(Detach());}CDC::~CDC(){ if (m_hDC != NULL) ::DeleteDC(Detach());}
[解决办法]
这段代码没有什么泄露
没有new而且都是用MFC的类
MFC会安全释放资源