[]MFC对话框窗体显示背景图片的代码,是否有内存泄漏

[求助]MFC对话框窗体显示背景图片的代码,是否有内存泄漏?
C/C++ code
    //加载背景图片 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


------解决方案--------------------
最好再加上:

ReleaseDC(&MemDC);
Bitmap.DeleteObject();

------解决方案--------------------
探讨
最好再加上:

ReleaseDC(&MemDC);
Bitmap.DeleteObject();

------解决方案--------------------
OldBitmap->DeleteObject(); //恢复设备环境
============
这个不对,OldBitmap是不用删除的。
改成这样:
 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);
 
MemDC.SelectObject(OldBitmap);//恢复Mem,并将Bitmap从CDC中选出来,否则Bitmap无法释放
Bitmap.DeleteObject();
ReleaseDC(pDC);

另外,MemDC可以不用调用ReleaseDC的,MSDN上的例子中就没有调用。
------解决方案--------------------
memdc是create的,即使要释放也要用memdc.DeleteDc()。

你可以跟着看看CDC的实现,他在析构函数里已经调用了DeleteDC(),因此这个就不用自己做了

C/C++ code
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会安全释放资源