一段自绘按钮的代码,为什么会有内存泄露?该怎么处理

一段自绘按钮的代码,为什么会有内存泄露?
每运行一次,内存就会增长12到16字节,请问错在哪儿?
代码:
void   CShadowCtrl::DrawItem(LPDRAWITEMSTRUCT   lpDrawItemStruct)  
{
CDC   *   dc   =   GetDC()   ;
dcMemory.CreateCompatibleDC(dc);  
CRect   rc;
GetClientRect(&rc);

CBitmap   bmp;  
bmp.CreateCompatibleBitmap(dc,rc.Width(),rc.Height());
dcMemory.SelectObject(&bmp);

CBrush   brush,*oldBrush;
CPen   pen,*oldPen;

//draw   BK
brush.Detach();
brush.CreateSolidBrush(m_bkColor);
pen.Detach();
pen.CreatePen(PS_SOLID,1,m_bkColor);
oldBrush   =   dcMemory.SelectObject(&brush);
oldPen   =   dcMemory.SelectObject(&pen);
dcMemory.Rectangle(&rc);

//Draw   Text
dcMemory.SelectObject(&m_textFont);
CString   strText;
GetWindowText(strText);
dcMemory.SetTextColor(m_textCurrColor);
dcMemory.SetBkMode(TRANSPARENT);
dcMemory.DrawText(strText,&rc,DT_CENTER   |   DT_VCENTER   |DT_WORDBREAK);

dc-> BitBlt(0,0,rc.Width(),rc.Height(),&dcMemory,0,0,SRCCOPY);
dcMemory.SelectObject(oldBrush);
dcMemory.SelectObject(oldPen);
brush.DeleteObject();
pen.DeleteObject();
bmp.DeleteTempMap();
bmp.DeleteObject();
dcMemory.DeleteDC();
}

------解决方案--------------------
你用了
CDC * dc = GetDC() ;
你应该加上
ReleaseDC(dc);
你再试试吧,看有没有效果。
------解决方案--------------------
内存泄露怎么回事我不知道
不过我重载这个函数时rcItem ,hwnd....都是通过lpDrawItemStruct得到的