int maskWidth=100; int maskHeight=100; CRect maskRect(0,0,maskWidth,maskHeight); CDC *pImageDC=CDC::FromHandle(m_pImage->GetDC()); CImage mask; VERIFY(mask.Create(maskWidth,maskHeight,m_pImage->GetBPP())); CDC *pMaskDC=CDC::FromHandle(mask.GetDC()); CBrush brush(RGB(0,0,0)); pMaskDC->FillRect(maskRect,&brush); CBrush fillBrush(RGB(0xff,0xff,0xff)); pMaskDC->SelectObject(&fillBrush); pMaskDC->Ellipse(maskRect); pMaskDC->BitBlt(0,0,maskWidth,maskHeight,pImageDC,0,0,SRCPAINT); mask.ReleaseDC(); m_pImage->ReleaseDC();