Осведомлен ли SystemParametersInfo DPI?
В частности, изменяется ли "результат" в следующем коде при увеличении DPI через настройки экрана панели управления Windows?
UINT result = 0;
if(SystemParametersInfo(SPI_GETFOCUSBORDERHEIGHT, 0, &result, 0) != FALSE)
{
result = ?;
}
Причина, по которой я не могу проверить это самостоятельно, заключается в том, что я не могу изменить настройку DPI на компьютере, на котором я работаю, потому что администратор отключил эту опцию.
1 ответ
Документы неясны, но в целом третий параметр имеет только вход / выход, потому что Win32 API здесь перегружен как получатель, так и установщик. Я не ожидал бы, что это изменится при вызове SET, но при вызове GET, который вы указали выше, да, он изменится, чтобы указать текущее значение. Вы намеревались на самом деле опубликовать вызов SET? Текст вопроса подразумевает, что вы пытаетесь установить значение.
Для следующего кода значение не должно изменяться:
UINT result = REQUIRED_NEW_VALUE;
if(SystemParametersInfo(SPI_SETFOCUSBORDERHEIGHT, 0, &result, 0) != FALSE)
{
// result == the same as what was input
}
Для кода, который вы разместили, result
изменится с 0 на текущее настроенное значение:
UINT result = 0;
if(SystemParametersInfo(SPI_GETFOCUSBORDERHEIGHT, 0, &result, 0) != FALSE)
{
// result == the current configured value
}