Programmatic resizing can be done using the function set-top-level-interface-geometry. For example, to double the width of an interface about its center:
(setf interface (contain (make-instance 'interface)))
Use the mouse or window manager-specific gesture to resize the interface, then evaluate:
(multiple-value-bind (x y w h)
(top-level-interface-geometry interface)
(execute-with-interface interface
'set-top-level-interface-geometry
interface
:x (round (- x (* 0.5 w)))
:y y
:width (* 2 w)
:height h))
All resize operations are subject to the constraints. The constraints can be altered programmatically as described in Changing the constraints.
Resize operations are also subject to automatic modification by the system in cases where the new window geometry coincides with a system area such as the Mac OS X menu bar or the Microsoft Windows taskbar, as described in Positioning CAPI windows.
You should not assume that a window is located where it has just been programmatically positioned. Instead you should query the current position by top-level-interface-geometry.
So if you wish to display CAPI interface windows W1 and W2 relative to each other. You should:
make-instance
or later by set-hint-table, thenThe reason for this is that the window system may disallow certain positions (for example on the Mac OS X menu bar) therefore you cannot be certain of the position of W1 .
CAPI User Guide and Reference Manual (Windows version) - 3 Aug 2017