是否有必要在 DeleteObject() 之前调用 SelectObject()?

Is it necessary to call SelectObject() before DeleteObject()?

我有一个 HBITMAP select 进入内存 DC。

我知道我应该在 HBITMAP 上调用 DeleteObject(),然后再在内存 DC 上调用 DeleteDC(),但是是否还需要使用 SelectObject() 来 select 在调用 DeleteObject()?

之前将旧的 HBITMAP 放入内存 DC(因此 select 取出我想删除的 HBITMAP

是的,有必要;两个问题,如果你不这样做:

  • DC原图会泄露
  • 位图将被双重释放,因为 DC 在销毁时会尝试自行删除它