【发布时间】:2015-10-15 19:55:28
【问题描述】:
抱歉,我没有给出具体的问题标题。
我的开发环境是带有 Visual Studio 2010 的 Windows 7。产品面向 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。很多很多方法可以自己找出来,谷歌“windows enable dpiawareness”。跨度>
-
事实上,如果我能解决问题 3,我可能只是解决了问题。关于问题 3 的核心思想是如何在我的项目中禁用 DPI 可视化。有人说将 DPIAwareness 设置为 true 会禁用它。但它似乎不起作用。
标签: windows cursor resolution dpi