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) |