Доброго, методом неопытного "анализа", понял из-за чего происходит "утечка" памяти при перерисовке окон (в последней сборке):
В
ISSpriteHeader.pas -> в оконной функции
spWndPaint -> в
WM_ERASEBKGND, не освобождается дескриптор дисплейного контекста устройства (DC).
ReleaseDC добавил - "утечка" ушла, но появилось мерцание
Btn (при их перемещении), т.к. сообщение передается системе, которая с задержкой стирает фон:
Код:
WM_ERASEBKGND: begin
DC:= GetDC(h);
if (DC <> wParam) then begin
Result:= CallWindowProc(Pointer(FI^.lpOldProc), h, msg, wParam, lParam);
end else Result:= 1;
ReleaseDC(h, DC);
end;
А так мерцание нет, но не знаю на сколько корректно это? Код выше новее, значит была задумка или что-то будет не работать:
Код:
WM_ERASEBKGND: Result:= 1;
З.Ы.: Будет время буду тестить ещё.