Fonction EnableNonClientDpiScaling (winuser.h)

Dans les affichages à haute résolution, active la mise à l’échelle automatique de l’affichage des parties non clientes de la fenêtre de niveau supérieur spécifiée. Doit être appelé pendant l’initialisation de cette fenêtre.

Note Les applications s’exécutant à un DPI_AWARENESS_CONTEXT de DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2 mettre automatiquement à l’échelle leurs zones non clientes par défaut. Ils n’ont pas besoin d’appeler cette fonction.

 

Syntaxe

BOOL EnableNonClientDpiScaling(
  [in] HWND hwnd
);

Paramètres

[in] hwnd

Fenêtre pour laquelle la mise à l’échelle automatique doit être activée.

Valeur retournée

Si la fonction réussit, la valeur de retour est différente de zéro. Si la fonction échoue, la valeur de retour est égale à zéro. Pour obtenir des informations détaillées sur l’erreur, appelez GetLastError.

Remarques

L’appel de cette fonction active la mise à l’échelle non cliente pour une fenêtre de niveau supérieur individuelle avec DPI_AWARENESS_CONTEXT de DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE. Si au lieu de cela, vous n’utilisez pas la sensibilisation par fenêtre et que l’ensemble de votre processus s’exécute en mode DPI_AWARENESS_PER_MONITOR_AWARE, l’appel de cette fonction permet la mise à l’échelle non cliente dans les fenêtres de niveau supérieur de votre processus.

Si aucune de ces valeurs n’est vraie ou si vous appelez cette méthode à partir d’une autre fenêtre, elle échoue et retourne une valeur de zéro.

La mise à l’échelle non cliente pour les fenêtres de niveau supérieur n’est pas activée par défaut. Vous devez appeler cette API pour l’activer pour chaque fenêtre de niveau supérieur individuelle pour laquelle vous souhaitez que la zone non cliente soit mise à l’échelle automatiquement. Une fois que vous l’avez fait, il n’y a aucun moyen de le désactiver. L’activation de la mise à l’échelle non client signifie que toutes les zones dessinées par le système pour la fenêtre seront automatiquement mises à l’échelle en réponse aux modifications DPI sur la fenêtre. Cela inclut des zones telles que la barre de légende, les barres de défilement et la barre de menus. Vous souhaitez appeler EnableNonClientDpiScaling lorsque vous souhaitez que le système d’exploitation soit responsable du rendu automatique de ces zones à la taille correcte en fonction du ppp du moniteur.

L’appel de cette fonction active la mise à l’échelle non client pour les fenêtres de niveau supérieur uniquement. Les fenêtres enfants ne sont pas affectées.

Cette fonction doit être appelée à partir de WM_NCCREATE lors de l’initialisation d’une nouvelle fenêtre. Un exemple d’appel peut ressembler à ceci :

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

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 10, version 1607 [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2016 (applications de bureau uniquement)
Plateforme cible Windows
En-tête winuser.h (inclure Windows.h)
Bibliothèque User32.lib
DLL User32.dll