Thanks Matthew for the fix - it seems to work fine - and wow done so quickly too!<br><br>Is there a reason you have Windows enumerate the display monitors (with EnumDisplayMonitors) and then ask Windows for details for each of those monitors (with GetMonitorInfoW)? I am thinking that a more direct approach would be to have some sort of in-range step through the monitors in turn directly and collecting and processing the data that way. I am probably missing something but the enumerate-first approach seems to be doing more work than strictly necessary. Admittedly it&#39;s a terribly minor quibble, it&#39;s only a tiny bit more work, what with the small number of monitors and the small number of times this needs to be done, am just looking for greater understanding.<br>
<br>Cheers,<br><br>Kieron.<br><br><div class="gmail_quote">On Sat, May 26, 2012 at 8:18 AM, Matthew Flatt <span dir="ltr">&lt;<a href="mailto:mflatt@cs.utah.edu" target="_blank">mflatt@cs.utah.edu</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Thanks! I&#39;ve pushed a change that should solve the problem; let me know<br>
if it still doesn&#39;t work.<br>
<div class="HOEnZb"><div class="h5"><br>
At Sat, 26 May 2012 05:45:52 -0600, Kieron Hardy wrote:<br>
&gt; So it seems that for some reason (Older Dell laptop, ATI video, Windows 7<br>
&gt; using generic drivers) the Windows system call to return the list of<br>
&gt; monitors is returning them to Racket in a different order (primary display<br>
&gt; monitor last) than expected (primary display monitor first).<br>
&gt;<br>
&gt; The code for get-all-screen-rects (in<br>
&gt; collects/mred/private/wx/win32/frame.rkt) assumes monitor 0 is the primary<br>
&gt; display monitor and is the first item in the list returned by<br>
&gt; EnumDisplayDevices. My tests show that at least sometimes the primary<br>
&gt; display monitor is not the first item in the list (also noted on SO at<br>
&gt; <a href="http://stackoverflow.com/questions/2600255/how-can-i-retrieve-monitor-information" target="_blank">http://stackoverflow.com/questions/2600255/how-can-i-retrieve-monitor-information</a><br>
&gt; ).<br>
&gt;<br>
&gt; An alternative solution to getting monitor information would be to use<br>
&gt; GetMonitorInfo passing a MONITORINFO or MONITORINFOEX structure for each of<br>
&gt; the values in the range 0 .. GetSystemMetrics (SM_CMONITORS) and used in<br>
&gt; Racket perhaps sorted by the monitor name returned in the szDevice field of<br>
&gt; the MONITORINFOEX structure.<br>
&gt;<br>
&gt; If Racket needs to designate monitor 0 as the primary monitor then<br>
&gt; get-all-screen-rects must enumerate the display monitors and then perform<br>
&gt; some processing to sort them so that the primary monitor is returned as the<br>
&gt; first item in the list.<br>
&gt;<br>
&gt; Cheers,<br>
&gt;<br>
&gt; Kieron.<br>
</div></div><div class="HOEnZb"><div class="h5">&gt; ____________________<br>
&gt;   Racket Users list:<br>
&gt;   <a href="http://lists.racket-lang.org/users" target="_blank">http://lists.racket-lang.org/users</a><br>
</div></div></blockquote></div><br>