各位大侠帮小弟我看看这段代码

各位大侠帮我看看这段代码.
对界面不太熟.是不是实现得太麻烦了?是不是有资源没有释放啊?

HBITMAP   *hBitmap;   //定义位图对象句柄  

CDC   MemDC;  
CClientDC   ClientDC(this);  
MemDC.CreateCompatibleDC(&ClientDC);  
hBitmap=(HBITMAP*)::   LoadImage(   AfxGetInstanceHandle(), "res\\Loader_BG.bmp ",IMAGE_BITMAP,0,0,  
LR_CREATEDIBSECTION|LR_LOADFROMFILE);  
if(hBitmap==NULL)  
{
return   FALSE;  
}

CBitmap   bitmap;  
bitmap.Attach(hBitmap);  

BITMAP   bmp;  
bitmap.GetBitmap(&bmp);  

CDC   cdc;
cdc.CreateCompatibleDC(pDC);  
cdc.SelectObject(&bitmap);  
RECT     rec;
GetWindowRect(&rec);
pDC-> BitBlt(0,0,rec.right,rec.bottom,&cdc,0,0,SRCCOPY);

------解决方案--------------------
HBITMAP hBitmap; //定义位图对象句柄 不是指针

CDC MemDC;
CClientDC ClientDC(this);
MemDC.CreateCompatibleDC(&ClientDC);
hBitmap=(HBITMAP):: LoadImage( AfxGetInstanceHandle(), "res\\Loader_BG.bmp ",IMAGE_BITMAP,0,0,
LR_CREATEDIBSECTION|LR_LOADFROMFILE);
if(hBitmap==NULL)
{
return FALSE;
}

CBitmap bitmap;
bitmap.Attach(hBitmap);

BITMAP bmp;
bitmap.GetBitmap(&bmp);

CDC cdc;
cdc.CreateCompatibleDC(pDC); //又来一个cdc,上面那个MemDC干什么用?
CBitmap *pOldBmp = cdc.SelectObject(&bitmap);
RECT rec;
GetWindowRect(&rec);
//pDC-> BitBlt(0,0,rec.right,rec.bottom,&cdc,0,0,SRCCOPY);//这样可能不能绘制位图,如果位图比窗口小的话,改成
pDC-> BitBlt(0,0,bmp.bmWidth,bmp.bmHeight,&cdc,0,0,SRCCOPY);//否则,bmp变量有什么用?
cdc.SelectObject(pOldBmp); //GDI资源选入DC后要及时选出销毁
//DeleteObject(hBitmap); //由于你这里位图句柄绑定到CBitmap对象了,在析构函数中会自动销毁,否则需要自己销毁
//如果加载位图时有LR_SHARED标记,不需要销毁。