Condividi tramite


Funzione EnableNonClientDpiScaling (winuser.h)

Nei display con valori DPI alti consente il ridimensionamento automatico della visualizzazione delle parti dell'area non client della finestra di primo livello specificata. Deve essere chiamato durante l'inizializzazione di tale finestra.

Nota Le applicazioni in esecuzione in un DPI_AWARENESS_CONTEXT di DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2 ridimensionano automaticamente le aree non client per impostazione predefinita. Non è necessario chiamare questa funzione.

 

Sintassi

BOOL EnableNonClientDpiScaling(
  [in] HWND hwnd
);

Parametri

[in] hwnd

Finestra in cui deve essere abilitata la scalabilità automatica.

Valore restituito

Se la funzione ha esito positivo, il valore restituito è diverso da zero. Se la funzione ha esito negativo, il valore restituito è zero. Per informazioni dettagliate sull'errore, chiamare GetLastError.

Commenti

La chiamata a questa funzione consentirà il ridimensionamento non client per una singola finestra di primo livello con DPI_AWARENESS_CONTEXT di DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE. Se invece non si usa la consapevolezza per finestra e l'intero processo è in esecuzione in modalità DPI_AWARENESS_PER_MONITOR_AWARE , la chiamata a questa funzione abiliterà il ridimensionamento non client nelle finestre di primo livello del processo.

Se nessuno di questi valori è true o se si chiama questo metodo da qualsiasi altra finestra, l'operazione avrà esito negativo e restituirà un valore pari a zero.

Il ridimensionamento non client per le finestre di primo livello non è abilitato per impostazione predefinita. È necessario chiamare questa API per abilitarla per ogni singola finestra di primo livello per cui si vuole ridimensionare automaticamente l'area non client. Una volta fatto, non c'è modo di disabilitarlo. L'abilitazione del ridimensionamento non client significa che tutte le aree disegnate dal sistema per la finestra verranno ridimensionate automaticamente in risposta alle modifiche DPI nella finestra. Sono incluse aree come la barra didascalia, le barre di scorrimento e la barra dei menu. Si vuole chiamare EnableNonClientDpiScaling quando si vuole che il sistema operativo sia responsabile del rendering automatico di queste aree in base alla dpi del monitor.

La chiamata a questa funzione abilita il ridimensionamento non client solo per le finestre di primo livello. Le finestre figlio non sono interessate.

Questa funzione deve essere chiamata da WM_NCCREATE durante l'inizializzazione di una nuova finestra. Una chiamata di esempio potrebbe essere simile alla seguente:

case WM_NCCREATE:
{
    EnableNonClientDpiScaling(hwnd);
    return (DefWindowProc(hwnd, message, wParam, lParam));
}

Requisiti

Requisito Valore
Client minimo supportato Windows 10 versione 1607 [solo app desktop]
Server minimo supportato Windows Server 2016 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione winuser.h (include Windows.h)
Libreria User32.lib
DLL User32.dll