Compartir a través de


Función EnableNonClientDpiScaling (winuser.h)

En las pantallas de valores altos de PPP, permite el escalado automático de la pantalla de las partes del área no cliente de la ventana de nivel superior especificada. Se debe llamar a durante la inicialización de esa ventana.

Nota Las aplicaciones que se ejecutan en una DPI_AWARENESS_CONTEXT de DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2 escalan automáticamente sus áreas que no son cliente de forma predeterminada. No necesitan llamar a esta función.

 

Sintaxis

BOOL EnableNonClientDpiScaling(
  [in] HWND hwnd
);

Parámetros

[in] hwnd

Ventana que debe tener habilitado el escalado automático.

Valor devuelto

Si la función se realiza correctamente, el valor devuelto es distinto de cero. Si la función no se realiza correctamente, el valor devuelto es cero. Para obtener información de error extendida, llame a GetLastError.

Comentarios

Al llamar a esta función, se habilitará el escalado que no sea de cliente para una ventana de nivel superior individual con DPI_AWARENESS_CONTEXT de DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE. Si en su lugar no usa el reconocimiento por ventana y todo el proceso se ejecuta en modo DPI_AWARENESS_PER_MONITOR_AWARE , al llamar a esta función se habilitará el escalado no de cliente en ventanas de nivel superior en el proceso.

Si ninguno de ellos es true o si llama a este método desde cualquier otra ventana, se producirá un error y devolverá un valor de cero.

El escalado no de cliente para las ventanas de nivel superior no está habilitado de forma predeterminada. Debe llamar a esta API para habilitarla para cada ventana de nivel superior individual para la que desea tener la escala de área no cliente automáticamente. Una vez hecho esto, no hay forma de deshabilitarlo. Habilitar el escalado no cliente significa que todas las áreas dibujadas por el sistema para la ventana se escalarán automáticamente en respuesta a los cambios de PPP en la ventana. Esto incluye áreas como la barra de subtítulo, las barras de desplazamiento y la barra de menús. Quiere llamar a EnableNonClientDpiScaling cuando desee que el sistema operativo sea responsable de representar estas áreas automáticamente en el tamaño correcto en función del valor de PPP del monitor.

Llamar a esta función habilita el escalado que no es de cliente solo para ventanas de nivel superior. Las ventanas secundarias no se ven afectadas.

Se debe llamar a esta función desde WM_NCCREATE durante la inicialización de una nueva ventana. Una llamada de ejemplo podría tener este aspecto:

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

Requisitos

Requisito Value
Cliente mínimo compatible Windows 10, versión 1607 [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2016 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado winuser.h (incluir Windows.h)
Library User32.lib
Archivo DLL User32.dll