Почему в WinApi есть две разные функции GetDpiForSystem и GetDpiForWindow? - PullRequest
1 голос
/ 06 апреля 2020

Может ли кто-нибудь привести примеры, когда окно DPI может отличаться от системного? Может быть, пользователи могут как-то указать извне приложение, в каком DPI оно должно работать. Или, может быть, это что-то еще.

1 Ответ

1 голос
/ 06 апреля 2020

Программное обеспечение может изменять настройки DPI Awareness для windows, созданного указанным потоком c (используя функцию SetThreadDpiAwarenessContext), в этом случае вызов GetDpiForWindow для такого windows затем даст (потенциально) другое значение, чем вызов GetDpiForSystem.

Кроме того, даже в пределах определенного потока (или процесса) можно изменить DPI Осознание с помощью вызова вышеупомянутой функции, создайте новое окно, затем вернитесь к предыдущим настройкам и создайте другое окно. Затем эти два windows будут иметь (возможно) различные значения DPI от друг друга (в зависимости от того, был ли выполнен исполняемый файл с включенной поддержкой DPI).

...