2017-08-31 5 views
-3

Ich arbeite an einer DLL für Spielehersteller und ich bin in einige Probleme. Ich kann die dpi-Einstellungen in einem bereits erstellten Fenster nicht ändern. Ist das wahr oder gibt es eine Problemumgehung? Ich habe SetProcessDpiAwareness und SetThreadDpiAwarenessContext verwendet. Ich benutzte C#, aber ich habe nichts dagegen, bei Bedarf zu C++ zu wechseln.Ändern Sie die dpi-Awareness eines Fensters nach der Erstellung

Vielen Dank im Voraus.

Antwort

-1

Vor Windows 10 ist der DPI Prozess weit und konstant. Beginnend mit Windows 10 Anniversary Update können Sie dynamisch ein Threads ändern DPI, das als mixed mode DPI scaling bekannt ist, aber es läßt immer noch nicht, dass Sie dynamisch ein Fenster DPI ändern:

  • Wenn ein Fenster erstellt wird, wird sein DPI Bewusstsein als die definierte DPI-Kenntnis des aufrufenden Threads zu diesem Zeitpunkt.
  • Wenn die Fensterprozedur für ein Fenster aufgerufen wird, wird der Thread automatisch in den DPI-Awareness-Kontext umgeschaltet, der beim Erstellen des Fensters verwendet wurde.

Die einzige Abhilfe, die ich denken kann, ist die Fäden DPI zu ändern und das alte Fenster mit einem neuen Instanz Ihrer Fenster ersetzen.

Verwandte Themen