Вверх ↑
Разработчик
Ответов: 26163
Рейтинг: 2127
#1: 2008-04-07 12:38:05 ЛС | профиль | цитата
Galkov писал(а):
Ты же говорил, что каждый день апдейт с SVN делаешь

Ну вот только сегодня еще не делал, за тобой и не успеешь
Ну есть у меня такое , я когда чем-то занимаюсь, то про SVN, просто забываю.

Вот посмотри, что получается, при таймере грузит процессор, но убирает флик, но при перемещении флик не убирается.


//[function WndProcBufferedDraw]
function WndProcBufferedDraw( Self_: PControl; var Msg: TMsg; var Rslt: Integer ): Boolean;
begin
Result := False;
if (Self_.DblBufTopParent = nil) then exit;
case Msg.message of
WM_ERASEBKGND:
begin
if (Self_.fCannotDoubleBuf) or not ((Self_.DblBufTopParent <> nil) and
Self_.fTransparent and (Self_.fParent <> nil)) or (Self_.DblBufTopParent.fDblBufPainting) then exit;
Rslt := 1;
Result := TRUE;
end;
WM_PAINT:
begin
if (Self_.fCannotDoubleBuf) or not ((Self_.fDoubleBuffered or Self_.DoubleBuffered)) or
Self_.CannotDoubleBuf or (Msg.wParam <> 0) then exit;
if not (Self_.DblBufTopParent.fDblBufPainting) then DoDrawDblBuffered( Self_ );
if (not Self_.DblBufTopParent.fDblBufPainting) or (Self_.DblBufTopParent.fPaintDC = 0) then
Self_.DblBufTopParent.Invalidate; // вот тут происходит сильная загрузка прцессора
Rslt := 0;
Result := True;
end;
WM_NCPAINT:
begin
if (Self_.fCannotDoubleBuf) or not Self_.fDoubleBuffered or Self_.CannotDoubleBuf or
Self_.fIsForm then exit;
Rslt := 0;
Result := True;
end;
WM_SETTEXT:
begin
if not Self_.fIsStaticControl then exit;
ShowWindow( Self_.fHandle, SW_HIDE );
Rslt := DefWindowProc( Self_.fHandle, WM_SETTEXT, Msg.wParam, Msg.lParam );
ShowWindow( Self_.fHandle, SW_SHOWNA );
UpdateWindow( Self_.fHandle ); // necessary!!!
Result := True;
end;
WM_COMMAND:
case HiWord( Msg.wParam ) of
LBN_SELCHANGE: Self_.Invalidate;
end;
WM_HSCROLL, WM_VSCROLL, WM_WINDOWPOSCHANGED: Self_.Invalidate;
end;
end;



------------ Дoбавленo:


Galkov писал(а):
Ну и в очередной раз продемонстрировал, что простые пути - не для тебя

Ну... все гениальное -- просто (с)
карма: 22

0