Lisp HUG Maillist Archive

Multiple Monitors on Windows

I am enhancing my running log application for Windows.  I
need to remember where the interface windows were positioned,
so the next time they are placed in the same (perferred)
position the user left them.  Everything is fine, I know
how to do that.  However I want to handle the fringe case
of where the user had a window on a second (or other monitor)
but has removed that monitor.  Now I want the window to appear
not in the perferred (non-existent) position, but on some valid
displayable area.

The problem is that the current "screen" CAPI functions do not
return a full picture of the screen layouts.  I have a two
screen system, monitor 1 is primary (1280x1024) and monitor
2 is to the left (1024x768).  CAPI:SCREENS returns only one
screen (monitor 1).  CAPI:INTERFACE-GEOMETRY returns a
list of (left top right bottom &rest i-think-screen-list??).

*** BTW the documentation for CAPI:INTERFACE-GEOMETRY appears to
be wrong, it says it returns (x y width height)

Can I get the info for my second monitor with some current
CAPI function??  (If I have a CAPI interface
on the second screen its interface geometry says that
its position has a negative left and right value, I assume
from screen 0)

LWW 4.4.0

Wade

-- listener transcript follows

RUNNING-LOG 36 > (setf screen (capi:convert-to-screen))
#<CAPI:COLOR-SCREEN 0 R-SCREEN>

RUNNING-LOG 37 > (capi:screens)
(#<CAPI:COLOR-SCREEN 0 R-SCREEN>)

RUNNING-LOG 38 > (capi:screen-internal-geometry screen)
0
0
1280
995

RUNNING-LOG 39 > (capi:element-screen rl)
#<CAPI:COLOR-SCREEN 0 R-SCREEN>

RUNNING-LOG 40 > (capi:interface-geometry rl)
(27 32 703 637 0 1)

;; Move interface to second monitor

RUNNING-LOG 48 > (capi:interface-geometry rl)
(-920 7 -244 612 0 1)

RUNNING-LOG 49 >


Re: Multiple Monitors on Windows

There was a thread with the title: "Open interface on second screen" 
a few months back (dated 7/29/2004, and so it seems to deal with
4.3, not 4.4...) that talked about this issue. Relevant excerpts would
be:

   "Our customers are complaining that with our new LWW 4.3-based beta,
   windows that should open on a second screen get cluttered on their
   main screen, making our stock trading tool almost useless (these
   traders often use even more than 4 displays!)."

   "The CAPI currently doesn't do multi-screen display."

Now, this was several months ago, and in a older version than the current
4.4, so it might not be the case. Nonetheless, it might help to take a look
at that thread. Google doesn't seem to have records of this list though, so
if you'd like, I could send you the nine messages composing the thread; just
ask.


On Apr 8, 2005 11:35 AM, Wade Humeniuk <whumeniu@telus.net> wrote:
> I am enhancing my running log application for Windows.  I
> need to remember where the interface windows were positioned,
> so the next time they are placed in the same (perferred)
> position the user left them.  Everything is fine, I know
> how to do that.  However I want to handle the fringe case
> of where the user had a window on a second (or other monitor)
> but has removed that monitor.  Now I want the window to appear
> not in the perferred (non-existent) position, but on some valid
> displayable area.
> 
> The problem is that the current "screen" CAPI functions do not
> return a full picture of the screen layouts.  I have a two
> screen system, monitor 1 is primary (1280x1024) and monitor
> 2 is to the left (1024x768).  CAPI:SCREENS returns only one
> screen (monitor 1).  CAPI:INTERFACE-GEOMETRY returns a
> list of (left top right bottom &rest i-think-screen-list??).
> 
> *** BTW the documentation for CAPI:INTERFACE-GEOMETRY appears to
> be wrong, it says it returns (x y width height)
> 
> Can I get the info for my second monitor with some current
> CAPI function??  (If I have a CAPI interface
> on the second screen its interface geometry says that
> its position has a negative left and right value, I assume
> from screen 0)
> 
> LWW 4.4.0
> 
> Wade
> 
> -- listener transcript follows
> 
> RUNNING-LOG 36 > (setf screen (capi:convert-to-screen))
> #<CAPI:COLOR-SCREEN 0 R-SCREEN>
> 
> RUNNING-LOG 37 > (capi:screens)
> (#<CAPI:COLOR-SCREEN 0 R-SCREEN>)
> 
> RUNNING-LOG 38 > (capi:screen-internal-geometry screen)
> 0
> 0
> 1280
> 995
> 
> RUNNING-LOG 39 > (capi:element-screen rl)
> #<CAPI:COLOR-SCREEN 0 R-SCREEN>
> 
> RUNNING-LOG 40 > (capi:interface-geometry rl)
> (27 32 703 637 0 1)
> 
> ;; Move interface to second monitor
> 
> RUNNING-LOG 48 > (capi:interface-geometry rl)
> (-920 7 -244 612 0 1)
> 
> RUNNING-LOG 49 >
> 
> 


-- 
=====================
Joshua Taylor
tayloj@rpi.edu


Updated at: 2020-12-10 08:53 UTC