2010-11-09 67 views
0

具體來說,當通過Windows控制面板顯示設置增加DPI時,下面代碼中的「結果」會發生變化嗎?SystemParametersInfo DPI是否可識別?

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

我不能籤這個的原因是我自己,我不能更改DPI我的工作,因爲管理員已禁用選項的計算機上設置。

回答

0

這些文檔還不清楚,但通常第三個參數只是輸入/輸出,因爲這裏的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 
} 
+0

呃,這不是我的意思是我害怕。我發佈的代碼「檢索由DrawFocusRect繪製的焦點矩形的頂部和底部邊緣的高度(以像素爲單位)」。在XP中,在默認的96 DPI下,SystemParametersInfo將「結果」設置爲「1」。我的問題是,使用「控制面板 - >顯示 - >設置 - >高級」將系統的DPI設置爲更高的值後,SystemParametersInfo是否會將不同的值放入「結果」中。例如。在兩倍的新聞部我希望它將「結果」設置爲「2」。 – sally 2010-11-09 12:06:29

+0

@sally - 我明白了,對於混淆抱歉。您是否有能力在使用Visual C++ Express Edition的家用臺式機上嘗試此操作? – 2010-11-09 12:08:36