Maison > développement back-end > C++ > Comment puis-je positionner avec précision Windows à travers plusieurs moniteurs à l'aide de setwindowpos?

Comment puis-je positionner avec précision Windows à travers plusieurs moniteurs à l'aide de setwindowpos?

Patricia Arquette
Libérer: 2025-01-30 18:36:09
original
218 Les gens l'ont consulté

How Can I Accurately Position Windows Across Multiple Monitors Using SetWindowPos?

Placement de fenêtre précis sur plusieurs moniteurs avec setwindowpos

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.

Comprendre les affichages du système et l'é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.

Obtention des informations d'affichage du système

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é.

Positionner les fenêtres avec SetWindowPos et les coordonnées de surveillance

pour positionner une fenêtre sur un moniteur spécifique en utilisant SetWindowPos, suivez ces étapes:

  1. Identifiez le moniteur cible: Obtenez la poignée hMonitor du moniteur souhaité en utilisant les méthodes décrites ci-dessus.

  2. 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.

  3. 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>
    Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal