If an application attempts to draw within a locked window, the system records the
extent of the attempted operation in a bounding rectangle. When the window is
unlocked, the system invalidates the area within this bounding rectangle, forcing an
eventual WM_PAINT message to be sent to the previously locked window and its child
windows. If no drawing has occurred while the window updates were locked, no area is
invalidated.
Looking at this - I only can do it outside of the WM_Paint event message since it
forces a WM_PAINT after it is unlocked.
I tried it and it left my window blank....
Christopher Crowe (Software Developer)
Microsoft MVP, MCP
Adrock Software
Byte Computer & Software LTD
P.O Box 13-155
Christchurch
New Zealand
Phone/Fax (NZ) 03-3651-112
> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]On
> Behalf Of McKenzie, Paul
> Sent: Thursday, 27 May 1999 08:29
> To: Multiple recipients of list Delphi
> Subject: RE: [DUG]: Drawing Speed
>
>
> what about using LockWindowUpdate locking.
> ie.
>
> LockWindowUpdate(Handle);
> DoDrawPicture; // Your Drawing Function
> LockWindowUpdate(0);
>
> LockWindowUpdate in the Win32.hlp - it might provide some performance
> improvements. The picture will be all calculated and drawn while
> the window
> is locked the display will be the only thing done when the window is
> unlocked.
>
> HTH - It might not be enough for what your after though.
>
> Regards
> Paul
> [EMAIL PROTECTED]
>
>
> -----Original Message-----
> From: Chris Crowe [mailto:[EMAIL PROTECTED]]
> Sent: Thursday, 27 May 1999 08:16 AM
> To: Multiple recipients of list Delphi
> Subject: [DUG]: Drawing Speed
>
>
> I am writing a custom scheduling control, which does a lot of
> drawing to the
> screen.
>
> Do stop flicker I have created a bitmap the size of the client area of the
> control. I then draw the interface to the bitmap, and then I draw
> the bitmap
> to the screen using Canvas.Draw(0,0, MyBitmap);
>
> I found this accetable when the control is small, but if it is say getting
> up to around 800 * 600 it takes a fair amount of time to draw. I have a
> timing component which states it takes 0.091 seconds on average
> to draw the
> image at the large screen size. You might say that it is quite fast. I
> suppose it is. But the control must support selecting of rows and
> scrolling
> of the window, much like a listbox.
>
> It is very much designed around the outlook/schedule plus style
> of their day
> view for their scheduling.
>
> Is there a faster way of drawing to the screen?, I have to draw to the
> bitmap becuase if I do not the screen flickers rather badly.
>
> Outlook draws very fast, and I assume my routines are quite optimized but
> obviosly not enough. So is there a better way, am I better to use
> BitBlt to
> draw to the screen than the Canvas.Draw()?
>
> Any other speed increasing tips would be greatly appreciated...
>
> ps: Does anyone know of a profiler that will profile a component,
> instead of
> the application?
>
> Chris
>
>
> Christopher Crowe (Software Developer)
> Microsoft MVP, MCP
>
> Adrock Software
> Byte Computer & Software LTD
> P.O Box 13-155
> Christchurch
> New Zealand
> Phone/Fax (NZ) 03-3651-112
>
> ------------------------------------------------------------------
> ---------
> New Zealand Delphi Users group - Delphi List - [EMAIL PROTECTED]
> Website: http://www.delphi.org.nz
> ------------------------------------------------------------------
> ---------
> New Zealand Delphi Users group - Delphi List - [EMAIL PROTECTED]
> Website: http://www.delphi.org.nz
>
---------------------------------------------------------------------------
New Zealand Delphi Users group - Delphi List - [EMAIL PROTECTED]
Website: http://www.delphi.org.nz