Freigeben über


EnableNonClientDpiScaling-Funktion (winuser.h)

Ermöglicht bei Anzeigen mit hohem DPI-Wert die automatische Anzeigeskalierung der Nicht-Clientbereichsteile des angegebenen Fensters der obersten Ebene. Muss während der Initialisierung dieses Fensters aufgerufen werden.

Hinweis Anwendungen, die mit einer DPI_AWARENESS_CONTEXTDPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2 ausgeführt werden, skalieren standardmäßig automatisch ihre Nichtclientbereiche. Sie müssen diese Funktion nicht aufrufen.

 

Syntax

BOOL EnableNonClientDpiScaling(
  [in] HWND hwnd
);

Parameter

[in] hwnd

Das Fenster, in dem die automatische Skalierung aktiviert sein soll.

Rückgabewert

Wenn die Funktion erfolgreich ist, ist der Rückgabewert ungleich Null. Wenn die Funktion fehlerhaft ist, ist der Rückgabewert null. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.

Hinweise

Wenn Sie diese Funktion aufrufen, wird die Nicht-Clientskalierung für ein einzelnes Fenster der obersten Ebene mit DPI_AWARENESS_CONTEXTDPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE aktiviert. Wenn Sie stattdessen keine Sensibilisierung pro Fenster verwenden und Ihr gesamter Prozess im DPI_AWARENESS_PER_MONITOR_AWARE Modus ausgeführt wird, ermöglicht der Aufruf dieser Funktion die Nicht-Clientskalierung in Fenstern der obersten Ebene in Ihrem Prozess.

Wenn keines dieser Werte wahr ist oder Sie diese Methode aus einem anderen Fenster aufrufen, schlägt sie fehl und gibt den Wert 0 (null) zurück.

Die Nicht-Clientskalierung für Fenster der obersten Ebene ist standardmäßig nicht aktiviert. Sie müssen diese API aufrufen, um sie für jedes einzelne Fenster auf oberster Ebene zu aktivieren, für das der Nichtclientbereich automatisch skaliert werden soll. Sobald Sie dies tun, gibt es keine Möglichkeit, es zu deaktivieren. Das Aktivieren der Nichtclientskalierung bedeutet, dass alle bereiche, die vom System für das Fenster gezeichnet wurden, als Reaktion auf DPI-Änderungen im Fenster automatisch skaliert werden. Dazu gehören Bereiche wie die Untertitel leiste, die Bildlaufleisten und die Menüleiste. Sie möchten EnableNonClientDpiScaling aufrufen, wenn das Betriebssystem für das automatische Rendern dieser Bereiche in der richtigen Größe basierend auf dem DPI-Wert des Monitors verantwortlich sein soll.

Der Aufruf dieser Funktion ermöglicht die Nicht-Clientskalierung nur für Fenster der obersten Ebene. Untergeordnete Fenster sind nicht betroffen.

Diese Funktion muss während der Initialisierung eines neuen Fensters von WM_NCCREATE aufgerufen werden. Ein Beispielaufruf könnte wie folgt aussehen:

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

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 10, Version 1607 [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2016 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile winuser.h (windows.h einschließen)
Bibliothek User32.lib
DLL User32.dll