[lazarus] Bug in lcl resizing code and patch for win32
Mattias Gaertner
nc-gaertnma at netcologne.de
Sat Jun 28 18:03:48 EDT 2003
On Sun, 29 Jun 2003 00:00:57 +0200
Mattias Gaertner <nc-gaertnma at netcologne.de> wrote:
> On Sat, 28 Jun 2003 17:54:25 -0300
> Karl Brandt <pascalive at bol.com.br> wrote:
>
> > >That does not explain the WM_MOVE change. The WM_SIZE is defined as
> > >such:
> > >
> > >nWidth = LOWORD(lParam); // width of client area
> > >nHeight = HIWORD(lParam); // height of client area
> > >
> > >Testing shows that those changes provide the same functionality, only
> > >slower.
> > >
> > >
> > The LParam returns the client Top/Left coordinates that are diferent of
> > window coordinates.
> > Try to debug this.
> > LCL expects the window coordinates.
> > For example: when a control is created with top,left =(0,0) the
> > MoveWindow proc (ResizeChild) fires WM_SIZE, WM_MOVE messages that are
> > passed in windowproc.
> > If you send the client coordinates, that will be a greater than (0,0)
> > let's say (4,24) the LCL will think that you moved the control (the
> > top,left coordinates in LCL are 0,0) and will ask the Interface to move
> > the control, creating that effect we see when we move the form.
> > The same occurs with WM_SIZE, but this time you must pass the Client
> > coordinates.
> > See yourself: try to pass the WM_SIZE parameters directly to LCL,
> > make breakpoints in LM_SETSIZE , Tcontrol.WMSize and WM_SIZE process and
> >
> > inspect the size values
>
> Right.
> TCustomForm bounds are the bounds around the client area including the
> menu. The menu as a non TControl is *not* on the client area of the form.
> The Left, Top of a form is in contrary to Delphi the Left, Top inner edge
> of the form border.
Sorry. I ment Width, Height are not the same as under Delphi. Delphi defines
Width/Height for forms including the borders.
The Left, Top of a form is tricky. Under most windowmanagers the Left, Top
of a form is the outer edge. So, this is the same as under Delphi.
Mattias
More information about the Lazarus
mailing list