DPI_AWARENESS-Enumeration (windef.h)
Gibt die Dpi-Einstellung (Dots per Inch) für einen Thread, einen Prozess oder ein Fenster an.
Syntax
typedef enum DPI_AWARENESS {
DPI_AWARENESS_INVALID = -1,
DPI_AWARENESS_UNAWARE = 0,
DPI_AWARENESS_SYSTEM_AWARE = 1,
DPI_AWARENESS_PER_MONITOR_AWARE = 2
} ;
Konstanten
DPI_AWARENESS_INVALID Wert: -1 Ungültige DPI-Erkennung. Dies ist ein ungültiger DPI-Sensibilisierungswert. |
DPI_AWARENESS_UNAWARE Wert: 0 DPI nicht bekannt. Dieser Prozess wird nicht für DPI-Änderungen skaliert und es wird immer davon ausgegangen, dass er einen Skalierungsfaktor von 100 % (96 DPI) aufweist. Es wird automatisch vom System auf jede andere DPI-Einstellung skaliert. |
DPI_AWARENESS_SYSTEM_AWARE Wert: 1 System-DPI-fähig. Dieser Prozess wird für DPI-Änderungen nicht skaliert. Es fragt einmal den DPI-Wert ab und verwendet diesen Wert für die Lebensdauer des Prozesses. Wenn sich der DPI-Wert ändert, wird der Prozess nicht an den neuen DPI-Wert angepasst. Es wird automatisch vom System hoch- oder herunterskaliert, wenn sich der DPI-Wert vom Systemwert ändert. |
DPI_AWARENESS_PER_MONITOR_AWARE Wert: 2 Dpi-fähig pro Monitor. Dieser Prozess überprüft den DPI-Wert, wenn er erstellt wird, und passt den Skalierungsfaktor an, wenn sich der DPI-Wert ändert. Diese Prozesse werden vom System nicht automatisch skaliert. |
Hinweise
In früheren Versionen von Windows wurden DPI-Werte nur einmal für eine gesamte Anwendung festgelegt. Für diese Apps hat der PROCESS_DPI_AWARENESS Typ den Typ der DPI-Erkennung für die gesamte Anwendung bestimmt. Derzeit wird die DPI-Erkennung auf einzelner Thread-, Fenster- oder Prozessebene definiert und durch den DPI_AWARENESS Typ angegeben. Während der Fokus von einer Prozessebene auf eine Threadebene verschoben wurde, sind die verschiedenen Arten der DPI-Erkennung identisch: unwissend, systemfähig und pro Monitor. Ausführliche Beschreibungen und einige Beispiele für die verschiedenen DPI-Arten finden Sie unter PROCESS_DPI_AWARENESS.
Die alte Empfehlung bestand darin, die DPI-Sensibilisierungsebene im Anwendungsmanifest mithilfe der Einstellung dpiAware zu definieren, wie in PROCESS_DPI_AWARENESS erläutert. Nachdem die DPI-Erkennung nun an Threads und Fenster und nicht an eine gesamte Anwendung gebunden ist, wird dem App-Manifest eine neue Fenstereinstellung hinzugefügt. Diese Einstellung ist dpiAwareness und überschreibt jede dpiAware-Einstellung , wenn beide im Manifest vorhanden sind. Obwohl es weiterhin empfohlen wird, das Manifest zu verwenden, können Sie jetzt die DPI-Erkennung ändern, während die App ausgeführt wird, indem Sie SetThreadDpiAwarenessContext verwenden.
Es ist wichtig zu beachten, dass Sie, wenn Ihre Anwendung über ein DPI_AWARENESS_PER_MONITOR_AWARE Fenster verfügt, dafür verantwortlich sind, den DPI-Wert zu verfolgen, indem Sie auf WM_DPICHANGED Nachrichten reagieren.
Beispiele
Dieser Codeausschnitt veranschaulicht, wie Sie den Wert DPI_AWARENESS_SYSTEM_AWARE in Ihrem Anwendungsmanifest festlegen.
<dpiAwareness>System</dpiAwareness>
Dieser Codeausschnitt veranschaulicht, wie Sie den Wert DPI_AWARENESS_PER_MONITOR_AWARE in Ihrem Anwendungsmanifest festlegen.
<dpiAwareness>PerMonitor</dpiAwareness>
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 10 [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Nicht unterstützt |
Kopfzeile | windef.h |