對不起,我沒有提出具體的問題標題。Windows DPI相關問題
我的開發環境是Windows 7和Visual Studio 2010的產品目標爲Windows 7,8和10
問題1: 我怎麼能得到當前DPI設置?
下面的代碼總是會返回96,這是100%DPI比例。
_dpiX = GetDeviceCaps(hdc, LOGPIXELSX);
問題2: 我怎麼能得到實際的分辨率?
我試圖用不同的選項使用GetSystemMetrics,他們都返回相同的值,這是縮放的分辨率。例如,實際分辨率爲1920 * 1080和175%DPI,它們都返回1097 * 617。
GetSystemMetrics(SM_CXFULLSCREEN)
GetSystemMetrics(SM_CXSCREEN)
GetSystemMetrics(SM_CXVIRTUALSCREEN)
問題3: 我可以設置應用程序不使用DPI可視化功能?
我們有一個解決方法,在屬性 - >兼容性中勾選'禁用高DPI設置的顯示比例縮放'選項並使用'所有用戶的更改設置'。我已經在Visual Studio中將項目DPIAwareness設置爲true,但它什麼也沒有做。
編輯:有人說,如果產品設置爲DPI意識,它不會得到DPI可視化。就我而言,這是一個GUI程序,將一些命令參數傳遞給另一個可執行文件。我在我的項目中將可執行文件DPIAwareness設置爲true。但是GUI沒有做任何事情。因此,如果GUI不是DPI,並且啓動了其他進程,其他進程是否也不知道DPI?
只要你不回答問題3,你就不會在乎1和2.很多很多方法可以讓你自己找到這個,Google「windows啓用dpiawareness」。 –
事實是,如果我可以解決問題3,我可能只是解決問題。關於問題3的核心思想是如何在我的項目中禁用DPI可視化。有人說將DPIAwareness設置爲true會禁用它。但它似乎並不奏效。 – Jerry