Positionner efficacement les fenêtres sur plusieurs moniteurs en utilisant SetWindowPos
nécessite une compréhension nuancée de la configuration d'affichage du système et du concept d'écran virtuel.
Configuration d'affichage du système:
L'origine du moniteur principal est (0, 0). Les moniteurs secondaires ont des coordonnées x négatives (à gauche de la primaire) ou des coordonnées x positives (à droite de primaire).
L'écran virtuel:
Il s'agit d'un affichage conceptuel englobant tous les moniteurs connectés. Son origine est le coin supérieur gauche du moniteur le plus à gauche. Sa largeur est la somme de toutes les largeurs du moniteur, et sa hauteur est la hauteur du moniteur le plus haut.
Tiration de la classe Screen
:
La classe Screen
propose des méthodes pour récupérer les informations cruciales d'écran:
Screen.FromHandle(hwnd)
: Identifie l'écran contenant une fenêtre donnée (hwnd). Screen.GetBounds(rect)
: Renvoie les limites de l'écran contenant un rectangle spécifié. Screen.DeviceName
: récupère le nom de l'appareil de l'écran, utile pour la création de contexte graphique. Utilisation des fonctions Win32 natives:
Ces fonctions fournissent des méthodes alternatives pour l'identification du moniteur:
MonitorFromWindow
: Renvoie la poignée du moniteur associée à une fenêtre. MonitorFromPoint
: Renvoie la poignée du moniteur pour un point donné. MonitorFromRect
: Renvoie la poignée du moniteur pour un rectangle donné. SetWindowPos
et les coordonnées de surveillance pour positionner une fenêtre sur un moniteur spécifique en utilisant SetWindowPos
, suivez ces étapes:
Identifiez le moniteur cible: Obtenez la poignée hMonitor
du moniteur souhaité en utilisant les méthodes décrites ci-dessus.
Calculer les coordonnées d'écran virtuelles: Ajustez les coordonnées X de la fenêtre en fonction de la position du moniteur par rapport au moniteur principal. Soustrayez la largeur totale des moniteurs précédents pour ceux à gauche de la primaire et ajoutez la largeur totale des moniteurs précédents et le primaire pour ceux à droite.
Utiliser SetWindowPos
: Utilisez les coordonnées d'écran virtuelles calculées dans l'appel SetWindowPos
:
<code class="language-c++">SetWindowPos(hwnd, hWndInsertAfter, x, y, cx, cy, SWP_NOZORDER | SWP_NOSIZE | SWP_SHOWWINDOW);</code>
En considérant soigneusement l'agencement d'affichage du système et en utilisant ces techniques, vous pouvez positionner avec précision Windows sur n'importe quel moniteur dans une configuration multi-moniteur en utilisant SetWindowPos
.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!