Robert May <rmay@popeslane.clara.co.uk> wrote:
<snip>
 
> 2. In the example code below, AbsLeft and AbsTop do not work as (I) expected. AbsLeft moves the Y coordinate and AbsTop moves the X coordinate. I expected these coordinates to not change. Is my understanding correct?

[ snip code ]

Indeed, there seems to be a problem with AbsLeft and AbsTop, although
it's not clear to me from either the documentation or the code what
they're meant to do. I would assume that they're meaning to set the
window position in Screen co-ordinates, as they retrieve the screen
co-ordinates, but then use them as client co-ordinates ...

In your example of AbsLeft(), the window moves down, as the top
co-ordinate is read in screen co-ordinates, and then used as a client
co-ordinate when setting the window position.

The code also looks like it might have been trying to leave the
bottom-right corner of the window unmoved, although I think this is
unlikely to what is expected.

I wouldn't expect the behaviour to be the same as the Left/Top methods,
as if this was intended, then the implementation would, almost certainly
have been done as an alias for Left/Top.

I've raised a bug report, which includes a short script showing the problem:
https://sourceforge.net/tracker/index.php?func=detail&aid=1578492&group_id=16572&atid=116572
and propose to 'fix' the behaviour of these 2 calls to be setting the
co-ordinate of the window in screen co-ordinates. Any objections?
  It is as I expected, you have anticipated and done
  exactly the right thing with the minimum of effort.
  Thanks.


Regards,
--
Robert May
Win32::GUI, a perl extension for native Win32 applications
http://perl-win32-gui.sourceforge.net/