Fonction LogicalToPhysicalPointForPerMonitorDPI (winuser.h)

Convertit un point dans une fenêtre à partir des coordonnées logiques en coordonnées physiques, quelle que soit la prise de conscience des points par pouce (ppp) de l’appelant. Pour plus d’informations sur les niveaux de sensibilisation ppp, consultez PROCESS_DPI_AWARENESS.

Syntaxe

BOOL LogicalToPhysicalPointForPerMonitorDPI(
  [in]      HWND    hWnd,
  [in, out] LPPOINT lpPoint
);

Paramètres

[in] hWnd

Handle vers la fenêtre dont la transformation est utilisée pour la conversion.

[in, out] 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 retournée

Retourne TRUE en cas de réussite, ou FALSE dans le cas contraire.

Remarques

Dans Windows 8, les applications prenant en charge le système ppp sont traduites entre 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, ces API 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.

Par exemple, une application peut avoir besoin de parcourir toute l’arborescence de fenêtres d’un autre processus et de demander au système des informations dépendantes de la résolution sur la fenêtre. Par défaut, le système retourne les informations en fonction de la prise de conscience ppp de l’appelant. C’est idéal pour la plupart des applications. Toutefois, l’appelant peut avoir besoin des informations basées sur la connaissance ppp de l’application associée à la fenêtre. Cela peut être nécessaire, car les deux applications envoient des informations dépendantes des PPP entre elles directement. Dans ce cas, l’application peut utiliser LogicalToPhysicalPointForPerMonitorDPI pour obtenir des coordonnées physiques, puis utiliser PhysicalToLogicalPointForPerMonitorDPI pour convertir les coordonnées physiques en coordonnées logiques en fonction de la prise de conscience ppp du HWND fourni.

Considérez deux applications : l’une a une valeur PROCESS_DPI_AWARENESSde PROCESS_DPI_UNAWARE et l’autre a une valeur de PROCESS_PER_MONITOR_AWARE. L’application PROCESS_DPI_UNAWARE crée une fenêtre sur un seul moniteur où le facteur d’échelle est de 200 % (192 PPP). Si les deux applications appellent GetWindowRect dans cette fenêtre, elles recevront des valeurs différentes. L’application PROCESS_DPI_UNAWARE reçoit un rect basé sur 96 coordonnées PPP, tandis que l’application PROCESS_PER_MONITOR_AWARE reçoit des coordonnées correspondant à la résolution réelle du moniteur. Si le PROCESS_PER_MONITOR_AWARE a besoin du rect que le système a retourné à l’application PROCESS_DPI_UNAWARE , il peut appeler LogicalToPhysicalPointForPerMonitorDPI pour les coins de son rect et passer le handle à la fenêtre de l’application PROCESS_DPI_UNAWARE . Cela retourne des points en fonction de la sensibilisation de l’autre application qui peuvent être utilisés pour créer un rect.

Conseil  

Étant donné qu’une application avec une valeur PROCESS_DPI_AWARENESSde PROCESS_PER_MONITOR_AWARE utilise la résolution réelle du moniteur, les coordonnées physiques et logiques sont les mêmes pour cette application.

 

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 8.1 [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2012 R2 [applications de bureau uniquement]
Plateforme cible Windows
En-tête winuser.h
Bibliothèque User32.lib
DLL User32.dll
Ensemble d’API ext-ms-win-ntuser-window-l1-1-4 (introduit dans Windows 10, version 10.0.14393)

Voir aussi

PROCESS_DPI_AWARENESS

PhysicalToLogicalPointForPerMonitorDPI