I work on a four monitor system with two dual output Nvidia graphics cards. Assorted software occasionally pops up dialog boxes with questions or messages. I would like it if the dialog boxes always appeared on the same monitor as the software's main window - but it doesn't. Is there any way I can tell the system which monitor it should place dialog boxes in?

link|improve this question

68% accept rate
feedback

3 Answers

up vote 2 down vote accepted

It has been my experience that it varies depending on the application. Some are making system calls so that the dialog boxes will always pop up on the "main" or "primary" monitor. Others will open where ever they were last dismissed from. Still others will follow the app and open on its monitor. The inconsistency is beyond frustrating and having used multi-monitor XP systems for the better part of a decade now, I can say I haven't come across a way to unify them. Inconsistencies like that were one of the many reasons I switched to Macs.

link|improve this answer
1  
Sadly this is correct; it depends on the way the program is written. This isn't even really a Windows flaw so much as a systemic oversight in software development. I'm not aware of any app that will let you force this, either - plenty can force the launch of the initial window but dialog boxes aren't as easy. :/ – Shinrai Mar 21 '11 at 14:36
do you know how to chnage which is the "main" or "primary" monitor? – Mick Mar 21 '11 at 15:01
IIRC, its whatever monitor your Start Menu lives on. It seems like I remember there being a way to separate that distinction using TweakUI back in the day, but I could be wrong. – peelman Mar 21 '11 at 17:13
feedback

Just to supplement @peelman's answer:

To support multiple monitor in a program - you need to call EnumDisplayMonitors and supply a callback function for each monitor. (In win32 api, for the matter...)

See http://msdn.microsoft.com/en-us/library/dd162610%28VS.85%29.aspx for details

link|improve this answer
feedback

I had this same problem at work on a windows XP system. The workaround that I found was using a scripting language called AutoIt. There is a library for working with multiple monitors. You can use the libray to specify a monitor and center a window on it automatically based on certain criteria (ie window title or process name). You can also use built in functions to specify exact coordinates if you desire.

The basics of it are that you need to have a looping script in the background that watches for specific windows and moves them when they appear. If you want more details, I can provide a general skeleton with some examples of options.

link|improve this answer
Sounds very interesting, though I would be nervous of it being rather complex. I would like to see an example script. Thanks – Mick Mar 22 '11 at 10:06
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.