> 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
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:
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.
Win32::GUI, a perl extension for native Win32 applications