When you finish with the CBitmap object created with the CreateCompatibleBitmap function, first select the bitmap out of the device context, then delete the CBitmap object.是不是说 CBitmap 要执行DeleteObject()这个呀.我看了看他的稀构什么也没做.
_AFXWIN_INLINE CBitmap::~CBitmap()
{ }_AFXWIN_INLINE CFont::~CFont()
{ }
_AFXWIN_INLINE CBrush::~CBrush()
{ }
这些是不是都要自己手动删除呀.
其他的用删除吗.

解决方案 »

  1.   

    我知道CreateDC要DeleteDC,GetDC要ReleaseDC。
      

  2.   

    用CreateCompatibleBitmap创建的,使用完后需要自己调用DeleteObject()
      

  3.   

    那些是需要自己删除的MSDN里面都有说明,使用前查查MSDN,用多了就知道那些需要了那些不需要了
      

  4.   

    CreateDC要DeleteDC,GetDC要ReleaseDC可以用api(DeleteObject(CGdiObject gdiObject)),也可以用类本身的释放资源方法CBitmap::DeleteObject() CDC::DeleteDC CDC::ReleaseDC如果用CPaintDC就不用了CPaintDC在CPaintDC::~CPaintDC()中自己就把资源释放了
      

  5.   

    CBitmap 不需要 执行 DeleteObject
    析构函数自动执行他的意思应该是在你使用完 CBitmap 之后,要将 bitmap 从 DC 中释放出来: CDC dc;
     CBitmap bmp;
     CBitmap *pOldBmp = NULL; bmp.CreateCompatibleBitmap(...); pOldBmp = dc.SelectObject( &bmp );
     
     ...
     ...--> dc.SelectObject( pOldBmp );