且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

重复调用 CreateCompatibleBitmap() 最终失败,GetLastError() == 6

更新时间:2023-02-16 20:07:42

必须先从 HDC 中取消选择位图,然后才能销毁它,否则会泄漏它.它是这样的:

You must de-select the bitmap from HDC before you can destroy it, otherwise you are leaking it. It goes like this:

HBITMAP hBmp = CreateCompatibleBitmap(...);
HBITMAP previousBitmap = (HBITMAP)SelectObject(bitmapDC, hBmp);
// ...
SelectObject(bitmapDC, previousBitmap);
DeleteObject(hBmp);

此外,您调用 GetDC(0) 但不保存返回值,因此您不能 ReleaseDC 它.另外,bitmapDC 是由 CreateCompatibleDC 创建的,应该用 DeleteObject 删除,而不是 ReleaseDC.

Also, you call GetDC(0) but don't save the return value so you can't ReleaseDC it. Also, bitmapDC is created by CreateCompatibleDC, and should be deleted with DeleteObject, not ReleaseDC.