Funzione PhysicalToLogicalPoint (winuser.h)
Converte le coordinate fisiche di un punto in una finestra in coordinate logiche.
Sintassi
BOOL PhysicalToLogicalPoint(
[in] HWND hWnd,
[in, out] LPPOINT lpPoint
);
Parametri
[in] hWnd
Tipo: HWND
Handle nella finestra la cui trasformazione viene usata 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 fisiche/dello schermo da convertire. Le nuove coordinate logiche vengono copiate in questa struttura se la funzione ha esito positivo.
Valore restituito
nessuno
Osservazioni
Windows Vista introduce il concetto di coordinate fisiche. Desktop Window Manager (DWM) ridimensiona le finestre non a punti per pollice (dpi) quando lo schermo è alto dpi. La finestra visualizzata sullo schermo corrisponde alle coordinate fisiche. L'applicazione continua a funzionare nello spazio logico. Pertanto, la visualizzazione dell'applicazione della finestra è diversa da quella visualizzata sullo schermo. Per le finestre ridimensionate, le coordinate logiche e fisiche sono diverse.
La funzione usa la finestra identificata dal parametro hWnd e le coordinate fisiche indicate nella struttura POINT per calcolare le coordinate logiche. Le coordinate logiche sono le coordinate non ridimensionate visualizzate all'applicazione in modo programmatico. In altre parole, le coordinate logiche sono le coordinate riconosciute dall'applicazione, che possono essere diverse dalle coordinate fisiche. L'API sostituisce quindi le coordinate fisiche con le coordinate logiche. Le nuove coordinate si trovano nelle coordinate del mondo la cui origine è (0, 0) sul desktop. Le coordinate passate all'API devono trovarsi nell'hWnd.
Le coordinate di origine si trovano in unità dispositivo.
In tutte le piattaforme , PhysicalToLogicPoint avrà esito negativo in una finestra con larghezza o altezza. un'applicazione deve prima stabilire una larghezza e un'altezza non 0 chiamando, ad esempio , MoveWindow. In alcune versioni di Windows (incluso Windows 7), PhysicalToLogicalPoint 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 con riconoscimento del sistema-DPI si traducono tra spazio fisico e logico usando PhysicalToLogicPoint 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, PhysicalToLogicPoint 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 PhysicalToLogicPointForPerMonitorDPI eLogicalToPhysicalPointForPerMonitorDPI.
Requisiti
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) |