2011/5/22 Max Vlasov <[email protected]>

> Hi,
> I encountered a problem I don't know how to solve.
>
> Some background. Any OS does a great job avoiding unnecessary drawing even
> if the program tries to draw everything in the window. But there are
> exceptions.
> - There are some functions, for example region-related in windows that
> nevertheless process full job even if the area the developer is drawing is
> not included in the window update region
> - There are internal off-screen manipulation so the developer himself have
> to do the job of avoiding extra processing so needs to know what the update
> region is .
>
> In Delphi I used the following trick. In the WM_Paint before inheried call
> I got update region with successive calls to GetUpdateRect (to determine if
> it exists) and GetUpdateRgn afterwards. This allowed to get the correct
> region before BeginPaint is called (it validates the region so getting it
> after BeginPaint makes no sense).
>
> But in Lazarus WM_Paint handler already contains DC and also GetUpdateRect
> call is failed. As I understand, this is because the WindowProc from
> win32callback.inc already did BeginPaint and provided the dc for the
> following call to the control WM_Paint.
>
> So the questions are:
> - is there a chance to intervene into lazarus drawing chain to get the
> update region before lazarus root windowproc call.
> - if the first is not possible (or too complex)  is it possible for lazarus
> to save the update region somewhere before BeginPaint or maybe do this
> optionally based on the special property value sure set to false by default
>
> Thanks
>
> Max Vlasov
>
>
Check Canvas.ClipRect

Zaher Dirkey
--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to