说明:这是我程序的一段代码,其功能是将 001.bmp  以“透明”的效果显示出来,但是因为我这个程序需要对这一段代码调用很多次。所以造成了“ a required resource was unavailable” 这个错误,看网上说的是没有释放资源,所以我就在最下面加了释放资源的语句(注:下面带“//****”的行(hang)为为这个释放而加的语句)但是效果还和以前一样运行到同样的地方就 出现“a required resource was unavailable”,实在不懂了,请各位高手指教一下,谢谢啦!!!  
       HBITMAP l_hbmpBitmap=(HBITMAP)::LoadImage  (NULL,“001.bmp”,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
     if( l_hbmpBitmap == NULL )
{
Default() ;
return ;
  }
    CClientDC l_PaintDC(this);
CRect l_rcClient( 0,0,34,34); 
CDC  l_BufferDC ;
 l_BufferDC.CreateCompatibleDC( &l_PaintDC ) ;
CBitmap  l_BufferBitmap ;
 l_BufferBitmap.CreateCompatibleBitmap( &l_PaintDC, l_rcClient.Width(),      l_rcClient.Height() ) ;
CBitmap* l_pOldBufferBitmap = l_BufferDC.SelectObject( &l_BufferBitmap ) ; CDC  l_MaskDC ;
 l_MaskDC.CreateCompatibleDC( &l_PaintDC ) ;
CBitmap  l_MaskBitmap ;
 l_MaskBitmap.CreateBitmap( l_rcClient.Width(), l_rcClient.Height(), 1, 1, NULL ) ;
CBitmap* l_pOldMaskBitmap = l_MaskDC.SelectObject( &l_MaskBitmap ) ; #define ROP4_TRANSPARENTBLIT 0xCCAA0020
#define SRCMASK 0x00220326
CDC  l_MemoryDC ;
 l_MemoryDC.CreateCompatibleDC( &l_PaintDC ) ;
CBitmap* l_pOldMemoryBitmap = l_MemoryDC.SelectObject( CBitmap::FromHandle( l_hbmpBitmap ) ) ;
l_BufferDC.BitBlt( 0,0,l_rcClient.Width(), l_rcClient.Height(), &l_MemoryDC, 0,0, SRCCOPY ) ;
l_MemoryDC.SelectObject( l_pOldMemoryBitmap ) ;
COLORREF l_crOldBack = l_BufferDC.SetBkColor( RGB( 255, 0, 255 ) ) ;
l_MaskDC.BitBlt(0,0, l_rcClient.Width(), l_rcClient.Height(), &l_BufferDC, 0,0, SRCCOPY ) ;
l_BufferDC.SetBkColor( l_crOldBack ) ;
if( ! l_PaintDC.MaskBlt(   posX,posY,
l_rcClient.Width(),
 l_rcClient.Height(),
 &l_BufferDC,
0,0,
 l_MaskBitmap,
0,0,
ROP4_TRANSPARENTBLIT ) )
{
CDC  l_CopyDC ;
 l_CopyDC.CreateCompatibleDC( &l_PaintDC ) ;
CBitmap  l_CopyBitmap ;
 l_CopyBitmap.CreateCompatibleBitmap( &l_PaintDC, l_rcClient.Width(), l_rcClient.Height() ) ;
CBitmap* l_pOldCopyBitmap = l_CopyDC.SelectObject( &l_CopyBitmap ) ;
l_CopyDC.BitBlt( posX,posY, l_rcClient.Width(), l_rcClient.Height(), &l_PaintDC, posX,posY, SRCCOPY  ) ;
l_CopyDC.BitBlt(  posX,posY,l_rcClient.Width(), l_rcClient.Height(), &l_MaskDC,0,0, SRCAND   ) ;
l_BufferDC.BitBlt(0,0,l_rcClient.Width(), l_rcClient.Height(), &l_MaskDC,0,0,SRCMASK  ) ;
l_CopyDC.BitBlt(posX,posY,l_rcClient.Width(), l_rcClient.Height(), &l_BufferDC,0,0,SRCPAINT ) ;
l_PaintDC.BitBlt( posX,posY,l_rcClient.Width(), l_rcClient.Height(), &l_CopyDC, posX,posY, SRCCOPY  ) ;
CClientDC dc(this);
//dc.TextOut(l_rcClient.Width(),l_rcClient.Height(),"jjj");
l_CopyDC.SelectObject( l_pOldCopyBitmap ) ;
l_CopyBitmap.DeleteObject();
l_CopyDC.DeleteDC();
}
l_MaskDC.SelectObject( l_pOldMaskBitmap ) ;
l_BufferDC.SelectObject( l_pOldBufferBitmap ) ;         l_MaskBitmap.DeleteObject();//****
l_BufferBitmap.DeleteObject();//****
     l_MemoryDC.DeleteDC();//****
     l_MaskDC.DeleteDC();//****
l_BufferDC.DeleteDC();//**** }    
}
}