Cet article relève des défis de l'utilisation SetWindowPos
pour positionner avec précision les fenêtres sur plusieurs moniteurs. Nous détaillerons comment placer précisément les fenêtres sur des écrans spécifiques en utilisant SetWindowPos
en conjonction avec d'autres fonctions API Windows.
Dans Windows, le coin supérieur gauche du moniteur principal est (0, 0). Les moniteurs à gauche ont des coordonnées X négatives, celles à droite ont des coordonnées X positives. Le bureau virtuel englobe tous les moniteurs connectés.
Obtenez la poignée d'un moniteur à l'aide de GetHashCode()
(pour un objet d'écran) ou des fonctions Win32 comme MonitorFromWindow
, MonitorFromPoint
et MonitorFromRect
. La poignée de contexte de l'appareil de l'écran est récupérée via CreateDC
à l'aide de la propriété DeviceName
de l'écran, permettant un dessin direct sur des moniteurs spécifiques.
Placement de fenêtre précis sur un moniteur choisi avec SetWindowPos
nécessite ces étapes:
Coordonnées de bureau virtuelles: Utiliser SendInput()
pour simuler des clics de souris, en utilisant une structure POINT
pour définir la position cible avant d'appeler SetWindowPos
. Cela positionne la fenêtre dans le système de coordonnées du bureau virtuel.
Coordonnées relatives au moniteur: Pour le positionnement spécifique au moniteur, calculez la position de la fenêtre par rapport à l'origine du moniteur. Utilisez Screen.FromPoint()
pour obtenir l'objet Screen
représentant le moniteur cible et sa propriété Bounds
pour déterminer la position relative.
Les applications dépourvues de sensibilisation au DPI peuvent connaître un positionnement d'écran inexact en raison de la virtualisation et de l'échelle DPI. Assurez-vous la sensibilisation au DPI en incluant les entrées nécessaires dans le fichier manifeste de votre application.
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!