a memory-leak problem
Sorry to post such a question, but I'm still wondering where is wrong
is the following code? It seems to led to a memory leak in my
program , I have checked it many times and can't find the reason yet .
any assistance will be appreciated!
/
***********************************************************************************************/
int CMainPage::DrawMyBitmap(CDC* pDC,UINT nID, CRect cRect)
{
CDC memDC;
CRect rcClient;
GetClientRect(&rcClient);
if ( !memDC.CreateCompatibleDC(pDC) )
{
return 0;
}
memDC.SetBkMode(TRANSPARENT);
CBitmap memBmp;
if ( !
memBmp.CreateCompatibleBitmap(pDC,rcClient.Width(),rcClient.Height()) )
{
memDC.DeleteDC ();
return 0;
}
CBitmap *pOldmap = memDC.SelectObject(&memBmp);
if ( !pOldmap )
{
memDC.DeleteDC ();
memBmp.DeleteObject ();
return 0;
}
CBitmap bmbk;
bmbk.LoadBitmap(nID); //load bitmap for resource
BITMAP stBitmap;
bmbk.GetObject(sizeof(BITMAP),&stBitmap);
CSize bmsize(stBitmap.bmWidth,stBitmap.bmHeight);
CBitmap *pOldmap2=memDC.SelectObject(&bmbk);
pDC->StretchBlt(cRect.left,cRect.top,bmsize.cx,bmsize.cy,&memDC,
0,0,bmsize.cx,bmsize.cy,SRCCOPY);
memDC.SelectObject(pOldmap2);
bmbk.DeleteObject();
memDC.SelectObject(pOldmap);
memBmp.DeleteObject();
memDC.DeleteDC ();
return 0;
}