SystemParametersInfo DPI是否可识别?

时间:2010-11-09 08:03:58

标签: windows winapi dpi

具体来说,当通过Windows控制面板显示设置增加DPI时,以下代码中的“结果”会发生变化吗?

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

我自己无法检查的原因是我无法更改我正在处理的计算机上的DPI设置,因为管理员已禁用该选项。

1 个答案:

答案 0 :(得分:0)

文档不清楚,但一般来说第3个参数仅在输入/输出,因为此处的Win32 API作为getter和setter都被重载。我不希望这会在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
}