Condividi tramite


Funzione LogicalToPhysicalPoint (winuser.h)

Converte le coordinate logiche di un punto in una finestra in coordinate fisiche.

Sintassi

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

Parametri

[in] hWnd

Tipo: HWND

Handle per la finestra la cui trasformazione viene utilizzata per la conversione. Le finestre di primo livello sono completamente supportate. Nel caso di finestre figlio, viene convertita solo l'area di sovrapposizione tra l'elemento padre e la finestra figlio.

[in, out] lpPoint

Tipo: LPPOINT

Puntatore a una struttura POINT che specifica le coordinate logiche da convertire. Le nuove coordinate fisiche vengono copiate in questa struttura se la funzione ha esito positivo.

Valore restituito

nessuno

Osservazioni

Windows Vista introduce il concetto di coordinate fisiche. Gestione finestre desktop (DWM) ridimensiona le finestre non con riconoscimento di punti per pollice (dpi) quando lo schermo è un valore DPI elevato. La finestra visualizzata sullo schermo corrisponde alle coordinate fisiche. L'applicazione continua a funzionare nello spazio logico. Di conseguenza, la visualizzazione della finestra dell'applicazione è diversa da quella visualizzata sullo schermo. Per le finestre ridimensionate, le coordinate logiche e fisiche sono diverse.

LogicalToPhysicalPoint è un'API di trasformazione che può essere chiamata da un processo che dichiara se stesso come compatibile con dpi. La funzione usa la finestra identificata dal parametro hWnd e le coordinate logiche fornite nella struttura POINT per calcolare le coordinate fisiche.

La funzione LogicalToPhysicalPoint sostituisce le coordinate logiche nella struttura POINT con le coordinate fisiche. Le coordinate fisiche sono relative all'angolo superiore sinistro dello schermo. Le coordinate devono trovarsi all'interno dell'area client di hWnd.

In tutte le piattaforme LogicalToPhysicalPoint avrà esito negativo in una finestra con 0 larghezza o altezza; Un'applicazione deve innanzitutto stabilire una larghezza e un'altezza non pari a 0 chiamando, ad esempio , MoveWindow. In alcune versioni di Windows (incluso Windows 7), LogicalToPhysicalPoint avrà comunque esito negativo se MoveWindow è stato chiamato dopo una chiamata a ShowWindow con SH_HIDE ha nascosto la finestra.

In Windows 8, le applicazioni compatibili con dpi di sistema si traducono tra spazio fisico e logico usando PhysicalToLogicalPoint e LogicalToPhysicalPoint. In Windows 8.1, la virtualizzazione aggiuntiva del sistema e delle comunicazioni tra processi significa che per la maggior parte delle applicazioni non sono necessarie queste API. Di conseguenza, in Windows 8.1, PhysicalToLogicalPoint e LogicalToPhysicalPoint non trasformano più i punti. Il sistema restituisce tutti i punti a un'applicazione nello spazio delle coordinate. Questo comportamento mantiene la funzionalità per la maggior parte delle applicazioni, ma esistono alcune eccezioni in cui è necessario apportare modifiche per assicurarsi che l'applicazione funzioni come previsto. In questi casi, usare PhysicalToLogicalPointForPerMonitorDPI e LogicalToPhysicalPointForPerMonitorDPI.

Requisiti

Requisito Valore
Client minimo supportato Windows Vista [solo app desktop]
Server minimo supportato Windows Server 2008 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione winuser.h (include Windows.h)
Libreria User32.lib
DLL User32.dll
Set di API ext-ms-win-ntuser-window-l1-1-1 (introdotto in Windows 8.1)