MFC加載圖片記憶體泄漏了,但是找不到原因,麻煩各位幫忙看下。

代碼如下:
void CLoadBmpDlg::DispBmpByPath()
{
CBitmap hbmp;
HBITMAP hbitmap;
CStatic *pStaic;
pStaic=(CStatic*)GetDlgItem(IDC_ID_PHOTO);//控制元件ID
hbitmap = SHLoadDIBitmap(_T("\\LoadBmp\\Id.bmp"));//要加載的bmp路徑
if (NULL == hbitmap)
return;
hbmp.Attach(hbitmap);
BITMAP bm;
hbmp.GetBitmap(&bm);
CDC dcMem;
dcMem.CreateCompatibleDC(GetDC());
CBitmap *poldBitmap=(CBitmap*)dcMem.SelectObject(hbmp);
CRect lRect;
pStaic->GetClientRect(&lRect);
pStaic->GetDC()->StretchBlt(lRect.left ,lRect.top ,lRect.Width(),lRect.Height(),
&dcMem,0 ,0,bm.bmWidth,bm.bmHeight,WHITENESS);
pStaic->GetDC()->StretchBlt(lRect.left ,lRect.top ,lRect.Width(),lRect.Height(),
&dcMem,0 ,0,bm.bmWidth,bm.bmHeight,SRCCOPY);
dcMem.SelectObject(&poldBitmap);
dcMem.DeleteDC();
hbmp.DeleteObject();
}
uj5u.com熱心網友回復:
"For each call to GetDC, you must have a subsequent call to ReleaseDC."所以dcMem.CreateCompatibleDC(GetDC()); 這句代碼要改下,保存GetDC()得到的DC,然后ReleaseDC()。
uj5u.com熱心網友回復:
CDC *pDC=GetDC();// 一次 !其他 用 pDC , 不能 多次 GetDC ;(系統 沒次 給你分配一個 臨時 DC)
最后 ReleaseDC()
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/120613.html
標籤:界面
