Función LogicalToPhysicalPoint (winuser.h)

Convierte las coordenadas lógicas de un punto de una ventana en coordenadas físicas.

Sintaxis

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

Parámetros

[in] hWnd

Tipo: HWND

Identificador de la ventana cuya transformación se usa para la conversión. Las ventanas de nivel superior son totalmente compatibles. En el caso de ventanas secundarias, solo se convierte el área de superposición entre el elemento primario y la ventana secundaria.

[in, out] lpPoint

Tipo: LPPOINT

Puntero a una estructura POINT que especifica las coordenadas lógicas que se van a convertir. Las nuevas coordenadas físicas se copian en esta estructura si la función se realiza correctamente.

Valor devuelto

None

Observaciones

Windows Vista presenta el concepto de coordenadas físicas. El Administrador de ventanas de escritorio (DWM) escala ventanas que no son puntos por pulgada (ppp) cuando la pantalla es de ppp alto. La ventana que se ve en la pantalla corresponde a las coordenadas físicas. La aplicación sigue funcionando en el espacio lógico. Por lo tanto, la vista de la aplicación de la ventana es diferente de la que aparece en la pantalla. En el caso de las ventanas escaladas, las coordenadas lógicas y físicas son diferentes.

LogicalToPhysicalPoint es una API de transformación a la que puede llamar un proceso que se declara como compatible con ppp. La función usa la ventana identificada por el parámetro hWnd y las coordenadas lógicas proporcionadas en la estructura POINT para calcular las coordenadas físicas.

La función LogicalToPhysicalPoint reemplaza las coordenadas lógicas de la estructura POINT por las coordenadas físicas. Las coordenadas físicas son relativas a la esquina superior izquierda de la pantalla. Las coordenadas deben estar dentro del área cliente de hWnd.

En todas las plataformas, LogicalToPhysicalPoint producirá un error en una ventana que tenga un ancho o alto de 0; En primer lugar, una aplicación debe establecer un ancho y un alto que no sean de 0 llamando, por ejemplo, MoveWindow. En algunas versiones de Windows (incluido Windows 7), LogicalToPhysicalPoint seguirá produciendo un error si se ha llamado a MoveWindow después de llamar a ShowWindow con SH_HIDE ha ocultado la ventana.

En Windows 8, las aplicaciones compatibles con PPP del sistema se traducen entre el espacio físico y lógico mediante PhysicalToLogicalPoint y LogicalToPhysicalPoint. En Windows 8.1, la virtualización adicional del sistema y las comunicaciones entre procesos significa que, para la mayoría de las aplicaciones, no necesita estas API. Como resultado, en Windows 8.1, PhysicalToLogicalPoint y LogicalToPhysicalPoint ya no transforman puntos. El sistema devuelve todos los puntos a una aplicación en su propio espacio de coordenadas. Este comportamiento conserva la funcionalidad de la mayoría de las aplicaciones, pero hay algunas excepciones en las que debe realizar cambios para asegurarse de que la aplicación funciona según lo previsto. En esos casos, use PhysicalToLogicalPointForPerMonitorDPI y LogicalToPhysicalPointForPerMonitorDPI.

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado winuser.h (incluya Windows.h)
Library User32.lib
Archivo DLL User32.dll
Conjunto de API ext-ms-win-ntuser-window-l1-1-1 (introducido en Windows 8.1)