J'ai déterminé que je peux utiliser GetSystemMetrics (SM_CMONITORS) pour interroger le nombre de moniteurs attachés, mais est-ce leur moyen de contrôler quel moniteur CreateWindowEx() utilise pour la fenêtre?Comment obtenez-vous CreateWindowEx() pour créer la fenêtre sur un moniteur spécifique?
Répondre
Oui, par les arguments "x" et "y". Utilisez EnumDisplayMonitors (passez deux valeurs NULL) pour énumérer les moniteurs. Votre rappel MonitorEnumProc obtient un RECT * sur le rectangle d'affichage du moniteur. Vous obtiendrez un RECT.right négatif si un moniteur est situé à gauche de votre principal.
Chaque moniteur affiche simplement une partie du bureau, ainsi l'affichage de la fenêtre sur un moniteur particulier consiste à déplacer la fenêtre sur la partie du bureau affichée par ce moniteur. Lorsque vous appelez CreateWindowEx (ou CreateWindow), vous pouvez spécifier les coordonnées x et y pour la fenêtre. L'afficher sur un moniteur particulier signifie simplement spécifier les coordonnées qui se trouvent dans la zone affichée par ce moniteur.
Vous pouvez trouver les zones de travail pour les moniteurs sur un système avec GetMonitorInfo.
Les paramètres x et y spécifient l'emplacement de la nouvelle fenêtre. Ce point peut être n'importe où sur l'écran virtuel (tous les rectangles du moniteur combinés).
Si vous souhaitez créer la fenêtre sur le même écran qu'une autre fenêtre, vous pouvez appeler MonitorFromWindow
. Sinon, vous pouvez énumérer tous les moniteurs avec EnumDisplayMonitors
.
De toute façon, une fois que vous avez un handle HMONITOR, vous devez alors appeler GetMonitorInfo
. Vos paramètres x et y doivent être une valeur à l'intérieur des limites du membre rcWork
dans la structure d'informations du moniteur. Vous devez normalement choisir des valeurs qui placent votre fenêtre au centre de ce rectangle.
Il est important d'utiliser le rectangle de la zone de travail et non le rectangle du moniteur complet, car vous ne souhaitez pas que votre fenêtre apparaisse sous la barre des tâches et d'autres barres d'outils toujours visibles.
- 1. Utiliser CreateWindowEx faire une fenêtre seule message
- 2. Fenêtre Moniteur (capture d'écran)
- 3. .NET/WinForms: agrandir une fenêtre sur un écran spécifique
- 4. Détecter quel moniteur affiche la fenêtre
- 5. Créer un moniteur pour le serveur de construction TFS 2008
- 6. Créer une fenêtre Statique et permettre l'ajout de texte en utilisant CreateWIndowEx()
- 7. Créer un moniteur Bluetooth basé sur le terminal dans XCode?
- 8. Démarrer le programme sur un deuxième moniteur?
- 9. Pourquoi CreateWindowEx retour 0
- 10. Rechercher une fenêtre avec un texte spécifique pour un processus
- 11. Comment diriger EventLogTraceListener pour créer dans un journal spécifique
- 12. Comment puis-je afficher un formulaire sur un moniteur secondaire?
- 13. comment créer une touche de raccourci pour afficher la fenêtre?
- 14. Comment obtenir si on clique sur la fenêtre statique
- 15. Comment savoir dans quel moniteur une fenêtre WPF se trouve
- 16. C# créer une fenêtre collante sur le bureau avec transperancy
- 17. onclick fenêtre ouverte et la taille spécifique
- 18. Obtenir un événement sur hotplug moniteur pour Windows
- 19. Détection de la résolution du moniteur avec javascript sur un moniteur secondaire
- 20. Afficher la fenêtre en plein écran sur le moniteur secondaire en utilisant Qt
- 21. Comment puis-je obtenir JavaScript pour ouvrir une fenêtre sur l'écran actuel
- 22. Comment créer un Excel spécifique à un classeur Ajouter
- 23. Mémoire pour un programme spécifique sur l'iPhone
- 24. Obtenir la taille du moniteur en python
- 25. Comment étalonner un moniteur Mac pour le développement de l'iPhone
- 26. Crochet sur le moniteur d'allumer
- 27. CreateWindowEx échoue avec l'erreur 1407 CLASS_NOT_REGISTERED pour la deuxième instance d'ActiveX
- 28. Moniteur Répertoire pour les modifications
- 29. Moniteur MSMQ
- 30. Greasemonkey: Comment créer un lien à partir d'un texte basé sur un code HTML précédent spécifique