You code this written good, safe with some small corrections. MemDC = CreateCompatibleDC(hdc) hBitmap = LoadImageA(App.hInstance, szPath, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE) hOldBitmap = SelectObject( MemDC, hBitmap ) ' bla bla bla SelectObject MemDC, hOldBitmap lRes = DeleteDC(MemDC) If lRes = 0 Then 'We have an error deleting a DC, do something... End If lRes = DeleteObject(hBitmap) If lRes = 0 then 'We have an error deleting an object, do something... End If Now the explication: When call to the function DeleteDCo or DeleteObject, this delete the object from the memory, but not set to zero the variable param. It is why you sees in the immediate window the same value of handle when typing "?hBitmap ". The unquestionable test that bitmap was destroyed is to try to use his handle after to have called to DeleteObject(hBitmap). Good Luck!! MrSparc.