nesco писал(а):
Я попробовал все, что можно, оттуда перенести в основной методТак вот это я, как раз, и оставил.
Ха, интересно, сейчас попробую перенести.
------------ Дoбавленo:
Перенес. С INFINITE завис начисто, но вот так работать стал намного быстрее в мультичтении
#pas
FImgCtx.GetStateInfo(stat, sz, 0);
// WaitForSingleObject(hOK,INFINITE);
while WaitForSingleObject(hOK,10) <> WAIT_OBJECT_0 do begin
WaitMessage;
if Assigned(Applet) and (not AppletTerminated) then Applet.ProcessMessages;
end;
CloseHandle(hOK);
FImgCtx.GetStateInfo(stat, sz, 0);
FImgCtx.Disconnect;
------------ Дoбавленo:
Проверил с Bitmap.Canvas.Handle, нифига не работает, только через промежуточный контекст, те вот так
#pas
if (Bitmap <> nil) and (not Bitmap.Empty) then begin
hdcMem:= CreateCompatibleDC(0);
SelectObject(hdcMem, Bitmap.Handle);
hRect := MakeRect(0, 0, Bitmap.Width, Bitmap.Height);
ClientRect;
if (sz.cx <> 0) or (sz.cy <> 0) then begin
if (sz.cx * 100) div sz.cy > (hw * 100) div hh then
FImgCtx.StretchBlt(hdcMem, x1, y1 + (hh - (hw * sz.cy) div sz.cx) div 2, hw, (hw * sz.cy) div sz.cx, 0, 0, sz.cx, sz.cy, SRCCOPY)
else
FImgCtx.StretchBlt(hdcMem, x1 + (hw - (hh * sz.cx) div sz.cy) div 2, y1, (hh * sz.cx) div sz.cy, hh, 0, 0, sz.cx, sz.cy, SRCCOPY);
end;
DeleteDC(hdcMem);
_hi_onEvent(_event_onLoad);
end;
------------ Дoбавленo:
Тут еще тэги косячат, зачем-то лишнюю ";" между "<>" воткнуло