对不起,我没有提出具体的问题标题。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