启用 DPI Awareness 设置无效 (VisualStudio 2017)
Posted
技术标签:
【中文标题】启用 DPI Awareness 设置无效 (VisualStudio 2017)【英文标题】:Enable DPI Awareness setting has no effect (VisualStudio 2017) 【发布时间】:2020-09-29 11:29:33 【问题描述】:我希望我的程序能够感知 DPI,但我不想以编程方式设置默认感知,因为根据 microsoft 文档 (https://docs.microsoft.com/en-us/windows/win32/hidpi/setting-the-default-dpi-awareness-for-a-process) 不建议这样做。项目配置中的 Enable DPI Awareness 对清单或程序本身没有影响。
我做了什么: 我添加了一个清单文件 我还启用了 DPI Awareness 在 clear+rebuild 之后,它会创建一个清单,但我得到的只是这个清单文件,没有任何 dpi 感知标签。
<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level='asInvoker' uiAccess='false' />
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
我阅读了文档,但无法使其正常工作。手动编辑无济于事,因为清单是在构建时生成的: https://docs.microsoft.com/en-us/cpp/build/understanding-manifest-generation-for-c-cpp-programs?view=vs-2019
希望您能提供帮助。我尽量尽快回答。如果您需要更多信息,请告诉我
【问题讨论】:
这似乎是 VS2017 中的一个错误(某种)。如果你可以升级到 VS2019,你可能不会有任何问题,但如果你不能,也许可以看到这里(和链接的文章):***.com/q/46428510/10871073 奇怪的是,“启用 dpi 感知:是”不是粗体,因为这不是默认设置。您的解决方案配置有问题。 @AdrianMole Edward 说额外的清单合并。这不会发生在我身上。所以我认为我的解决方案配置坏了。 我找到了一篇关于manifest set
的文章。在该 VC++ 项目的设置中,Additional Manifest Files
设置为 X-dpi.manifest
,Enable Dpi manifest
设置为 No
。希望对你有帮助。
有趣的是:如果我右键单击 .exe 并让程序 dpi 知道它可以工作。清单和解决方案设置将不起作用。这不是真正的答案......但它现在有效。
【参考方案1】:
这似乎是 VS2017 中的一个错误。如果你可以升级到 VS2019 你 应该升级。这解决了我的问题。
如果无法升级,可以右键单击 .exe 并启用 可访问性设置中的 dpi 感知标志。
【讨论】:
以上是关于启用 DPI Awareness 设置无效 (VisualStudio 2017)的主要内容,如果未能解决你的问题,请参考以下文章
Elastic认证特训营 难点解读12——Shard allocation awareness 和 Forced awareness 作用和区别是什么?
可以在每个会话的基础上以编程方式启用/禁用 DPI 缩放吗?