This short function releases all memory reserved by the specified bitmap. Note again that we have to differ between loaded and created surfaces, this is because we have to release different objects in each case:
Public Sub ReleaseBitmap( iBitmapInfo as tBitmapInfo )
With iBitmapInfo
'Select the original object for use
SelectObject .DC, .OriginalObject
If .MemoryDC Then
'Release created bitmap
DeleteObject .CompatibleBitmap
Else
'Release loaded picture
DeleteObject .PictureDisp
End If
'Release the DC
DeleteDC .DC
End With
End Sub
You can say that DC and OriginalObject are shared by both kinds of surfaces, however this is again API stuff you don't have to know exactly.