Le fichier à télécharger contient entre autres:
Les principales caractéristiques:
- Le Module_GetMonitorInfoByEnum
- Le Module_GetExcelWindowMonitorInf
- Des Module de Test qui donnent quelques exemples d'utilisation, notamment le positionnement d'un UserForm dans un Moniteur donné.
Les principales caractéristiques:
- Fonction GetMonitorInfoByEnum() retourne sous forme de table les caractéristiques de tous les Moniteurs connectés.
- Fonction GetExcelWindowMonitorInfo() retourne les caractéristiques du Moniteur qui contient la fenêtre Excel.
- Les caractéristiques des Moniteurs sont sous la forme d'une structure:
Code:Private Type MONITORINFO cbSize As Long rcMonitor As RECT rcWork As RECT dwFlags As Long End Type
- Qui référence une autre structure de rectangle:
Code:Private Type RECT Left As Long Top As Long Right As Long Bottom As Long End Type
□ rcMonitor donne le rectangle en Pixels du Moniteur
□ rcWork donne le rectangle en Pixels du Moniteur hors barre des tâches
□ dwFlags = 1 pour le Moniteur primaire, 0 pour les autres
- Soit un moniteur primaire de taille 1920 x 1080 pixels.
- Les valeurs du rectangle RECT du rcMonitor retournées seront:
□ .Left = 0
□ .Right = 1920
□ .Top = 0
□ .Bottom = 1080
- Cela facilite le calcul de:
□ Width = .Right - .Left
□ Height = .Bottom - .top
- Mais cela signifie aussi que les points qui font référence à
□ .Right
□ .Bottom
sont en dehors de l'écran.
- En effet:
□ de 0 à 1920 il y a 1921 pixels (on part de 0), en largeur l'écran va donc de 0 à 1919.
□ de 0 à 1080 il y a 1081 pixels (on part de 0), en hauteur l'écran va donc de 0 à 1079.
Cela se vérifie avec le fichier joint en utilisant le bouton <Test MonitorFromPoint>
- C'est d'ailleurs un principe général des rectangles utilisés en Windows API (GetWindowRect, GetClientRect, ...).
- V1 - Initiale.
- V2 - Correction du Handle permettant de calculer les coordonnées du moniteur.
- V3 - Correction d'un bug en récupération du Handle d'un Workbook multi-fenêtré.