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)