DeleteDC(windc);
Никогда. Вам нужно позвонить ReleaseDC (windc); вместо этого.
После ::CreateCompatibleDC(windc);
вам не нужно windc
и все равно, что с ним происходит. HDC, возвращаемый CreateCompatibleDC, просто выводит некоторые параметры (зависящее от устройства представление пикселей и т. Д.), Но никак не ссылается на windc
.
Вместо этого:
::SelectObject(memdc,(HGDIOBJ)bitmap);
//do the painting
//...
//painting done
/*DeleteDC(memdc) here? */
return bitmap;
Вы должны сделать что-то вроде этого:
HGDIOBJ prevBitmap = ::SelectObject(memdc,(HGDIOBJ)bitmap);
//do the painting
//...
//painting done
::SelectObject(memdc,prevBitmap);
DeleteDC(memdc);
return bitmap;