Holy Paladin
Legacy Member
owke, als iemand goesting heeft om een memory leak te zoeken..
ik heb dus code geschreven/aangepast voor bitmaps te roteren, dat is gelukt maar ik begrijp maar de helft van wat ik geschreven heb. toch denk ik dat alle handles gedelete heb, maar ik ben uiteraard verkeerd want er is een leak!
er zijn in totaal 5 handles, 4 worden gedelete. hOldBmp wordt niet gedelete, omdat dat in het origineel ook niet was, en als ik ze delete is de leak niet weg
(ik heb de meeste niet relevante code ervantussen gesmeten, for your viewing pleasure)
ik heb dus code geschreven/aangepast voor bitmaps te roteren, dat is gelukt maar ik begrijp maar de helft van wat ik geschreven heb. toch denk ik dat alle handles gedelete heb, maar ik ben uiteraard verkeerd want er is een leak!
er zijn in totaal 5 handles, 4 worden gedelete. hOldBmp wordt niet gedelete, omdat dat in het origineel ook niet was, en als ik ze delete is de leak niet weg
Code:
HDC hdcBuffer = CreateCompatibleDC(hDC);
HBITMAP hbmpBuffer = CreateCompatibleBitmap(hDC, rect.right, rect.bottom);
HBITMAP hOldBmp = (HBITMAP) SelectObject(hdcBuffer, bitmap->GetHandle());
HDC hdcNew = CreateCompatibleDC(hdcBuffer);
SelectObject(hdcNew, hbmpBuffer); // put the bitmap in hdcNew
BitBlt(hdcNew, 0, 0, rect.right, rect.bottom, hdcBuffer, 0, 0, SRCCOPY);
RotateMemoryDC(hbmpBuffer, hdcBuffer, rect.right, rect.bottom, iRotation, hdcNew, newright, newbottom);
----------------------------------
in deze functie RotateMemoryDC nog wat handlestuff:
hdcNew = CreateCompatibleDC(hdcBuffer);
HBITMAP hbmpNew = CreateCompatibleBitmap(hdcBuffer, newright, newbottom);
SelectObject(hdcNew, hbmpNew);
DeleteObject(hbmpNew);
-----------------------------------
TransparentBlt(hDC, X, Y, W, H, hdcNew, 0, 0, newright, newbottom, RGB(255,0,255));
DeleteDC(hdcBuffer);
SelectObject(hdcNew, hOldBmp);
DeleteObject(hbmpBuffer);
DeleteDC(hdcNew);
(wel met een andere hdc)