LogicalToPhysicalPoint, fonction (winuser.h)
Convertit les coordonnées logiques d’un point dans une fenêtre en coordonnées physiques.
Syntaxe
BOOL LogicalToPhysicalPoint(
[in] HWND hWnd,
[in, out] LPPOINT lpPoint
);
Paramètres
[in] hWnd
Type : HWND
Handle vers la fenêtre dont la transformation est utilisée pour la conversion. Les fenêtres de niveau supérieur sont entièrement prises en charge. Dans le cas des fenêtres enfants, seule la zone de chevauchement entre la fenêtre parente et la fenêtre enfant est convertie.
[in, out] lpPoint
Type : LPPOINT
Pointeur vers une structure POINT qui spécifie les coordonnées logiques à convertir. Les nouvelles coordonnées physiques sont copiées dans cette structure si la fonction réussit.
Valeur de retour
None
Remarques
Windows Vista introduit le concept de coordonnées physiques. Desktop Window Manager (DWM) met à l’échelle les fenêtres qui ne prennent pas en compte les points par pouce (ppp) lorsque l’affichage est élevé. La fenêtre affichée à l’écran correspond aux coordonnées physiques. L’application continue de fonctionner dans l’espace logique. Par conséquent, la vue de l’application de la fenêtre est différente de celle qui s’affiche à l’écran. Pour les fenêtres mises à l’échelle, les coordonnées logiques et physiques sont différentes.
LogicalToPhysicalPoint est une API de transformation qui peut être appelée par un processus qui se déclare comme prenant en charge les ppp. La fonction utilise la fenêtre identifiée par le paramètre hWnd et les coordonnées logiques fournies dans la structure POINT pour calculer les coordonnées physiques.
La fonction LogicalToPhysicalPoint remplace les coordonnées logiques dans la structure POINT par les coordonnées physiques. Les coordonnées physiques sont relatives à l’angle supérieur gauche de l’écran. Les coordonnées doivent se trouver à l’intérieur de la zone cliente de hWnd.
Sur toutes les plateformes, LogicalToPhysicalPoint échoue sur une fenêtre dont la largeur ou la hauteur est égale à 0 ; Une application doit d’abord établir une largeur et une hauteur autres que 0 en appelant, par exemple , MoveWindow. Sur certaines versions de Windows (y compris Windows 7), LogicalToPhysicalPoint échoue toujours si MoveWindow a été appelé après un appel à ShowWindow avec SH_HIDE a masqué la fenêtre.
Dans Windows 8, les applications prenant en charge les ppp système traduisent l’espace physique et l’espace logique à l’aide de PhysicalToLogicalPoint et LogicalToPhysicalPoint. En Windows 8.1, la virtualisation supplémentaire du système et des communications interprocesseurs signifie que pour la majorité des applications, vous n’avez pas besoin de ces API. Par conséquent, dans Windows 8.1, PhysicalToLogicalPoint et LogicalToPhysicalPoint ne transforment plus de points. Le système retourne tous les points à une application dans son propre espace de coordonnées. Ce comportement conserve la fonctionnalité pour la majorité des applications, mais il existe des exceptions dans lesquelles vous devez apporter des modifications pour vous assurer que l’application fonctionne comme prévu. Dans ce cas, utilisez PhysicalToLogicalPointForPerMonitorDPI et LogicalToPhysicalPointForPerMonitorDPI.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows Vista [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows Server 2008 [applications de bureau uniquement] |
Plateforme cible | Windows |
En-tête | winuser.h (inclure Windows.h) |
Bibliothèque | User32.lib |
DLL | User32.dll |
Ensemble d’API | ext-ms-win-ntuser-window-l1-1-1 (introduit dans Windows 8.1) |