Je travaille sur un système à quatre moniteurs avec deux cartes graphiques Nvidia à double sortie. Divers logiciels font occasionnellement apparaître des boîtes de dialogue contenant des questions ou des messages. J'aimerais que ces boîtes de dialogue apparaissent toujours sur le même moniteur que la fenêtre principale du logiciel, mais ce n'est pas le cas. Existe-t-il un moyen d'indiquer au système sur quel moniteur il doit placer les boîtes de dialogue ?
Réponses
Trop de publicités?D'après mon expérience, cela varie en fonction de l'application. Certaines font des appels système pour que les boîtes de dialogue s'ouvrent toujours sur le moniteur "principal" ou "primaire". D'autres s'ouvrent là où elles ont été ouvertes la dernière fois. D'autres encore suivent l'application et s'ouvrent sur son moniteur. Cette incohérence est plus que frustrante et, après avoir utilisé des systèmes XP multi-moniteurs pendant près d'une décennie, je peux dire que je n'ai pas trouvé de moyen de les unifier. De telles incohérences sont l'une des nombreuses raisons pour lesquelles je suis passé au Mac.
Je possède une carte AMD FirePro Multi-Monitor. Cette carte prend en charge HydraVision d'AMD qui comprend un gestionnaire de bureau. L'une des options disponibles est de "Préserver la position et la taille de l'application", et il y a aussi une option pour "Activer le repositionnement des dialogues" que vous pouvez régler sur "Afficher sur l'écran X préféré" ou "Afficher sur l'écran de l'application".
Juste pour compléter la réponse de @peelman :
Pour prendre en charge plusieurs moniteurs dans un programme - vous devez appeler EnumDisplayMonitors
et fournir une fonction de rappel pour chaque moniteur. (En api win32, d'ailleurs...)
Ver http://msdn.microsoft.com/en-us/library/dd162610%28VS.85%29.aspx pour plus de détails
J'ai eu ce même problème au travail sur un système Windows XP. La solution que j'ai trouvée consiste à utiliser un langage de script appelé AutoIt . Il existe une bibliothèque permettant de travailler avec plusieurs moniteurs . Vous pouvez utiliser la librairie pour spécifier un moniteur et y centrer automatiquement une fenêtre en fonction de certains critères (par exemple le titre de la fenêtre ou le nom du processus). Vous pouvez également utiliser des fonctions intégrées pour spécifier des coordonnées exactes si vous le souhaitez.
Pour l'essentiel, vous devez avoir un script en boucle en arrière-plan qui surveille les fenêtres spécifiques et les déplace lorsqu'elles apparaissent. Si vous voulez plus de détails, je peux fournir un squelette général avec quelques exemples d'options.