[Lazarus] Win32 API replacement calls

Graeme Geldenhuys graemeg.lists at gmail.com
Thu Jun 12 10:01:11 CEST 2008


On 12/06/2008, A.J. Venter <aj at outkastsolutions.co.za> wrote:
> This is actually quite a bit trickier than you think - the reason
>  being that under Linux there is no single way that windows are
>  controlled nor a single API for doing it with. Various window managers
>  and widgetsets behave in different ways.

A.J. is correct. It is a bit trickier than under Windows, but should
be impossible. Window Manager sometimes behave very different from
another, so your mileage my vary.

Using Xlib directly will probably be your best bet. Xlib functions you
will probably be using are...

XMoveResizeWindow(FDisplay, FWinHandle, left, top, w, h);
XMoveWindow(FDisplay, FWinHandle, x, y);

The FDisplay you can query (X Window supports multiple display
surfaces on the same server [this has nothing to do with multiple
monitors]). Read up on XOpenDisplay() and XDefaultScreen().

I'm not sure where you are going to get the FWinHandle from. I'm
pretty sure you can query the X Server for a list of child windows
from XRootWindow().

The rest is easy... But do remember, like A.J. said. When you call
xlib functions they tend to create hints and you ask the Window
Manager to fullfill that hint (request), but it isn't garaunteed. You
are simply asking, not telling it what to do.


Regards,
  - Graeme -


_______________________________________________
fpGUI - a cross-platform Free Pascal GUI toolkit
http://opensoft.homeip.net/fpgui/



More information about the Lazarus mailing list