Осведомлен ли SystemParametersInfo DPI? - PullRequest
0 голосов
/ 09 ноября 2010

В частности, изменяется ли «result» в следующем коде при увеличении DPI через настройки экрана панели управления Windows?

UINT result = 0;
if(SystemParametersInfo(SPI_GETFOCUSBORDERHEIGHT, 0, &result, 0) != FALSE)
{
    result = ?;
}

Причина, по которой я сам не могу проверить это, заключается в том, что я не могу изменить настройку DPI на компьютере, на котором я работаю, потому что администратор отключил эту опцию.

1 Ответ

0 голосов
/ 09 ноября 2010

Документы неясны, но в общем случае 3-й параметр имеет только вход / выход, потому что 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
}
...