启用 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.manifestEnable Dpi manifest 设置为 No。希望对你有帮助。 有趣的是:如果我右键单击 .exe 并让程序 dpi 知道它可以工作。清单和解决方案设置将不起作用。这不是真正的答案......但它现在有效。 【参考方案1】:

这似乎是 VS2017 中的一个错误。如果你可以升级到 VS2019 你 应该升级。这解决了我的问题。

如果无法升级,可以右键单击 .exe 并启用 可访问性设置中的 dpi 感知标志。

【讨论】:

以上是关于启用 DPI Awareness 设置无效 (VisualStudio 2017)的主要内容,如果未能解决你的问题,请参考以下文章

Elastic认证特训营 难点解读12——Shard allocation awareness 和 Forced awareness 作用和区别是什么?

可以在每个会话的基础上以编程方式启用/禁用 DPI 缩放吗?

[Shell]vim/vi 高效使用键盘图打印版-vi/vim 使用吸星大法

Qt应用程序中的高dpi缩放使图标平滑

Nginx启用Gzip压缩js无效的原因

Flutter StreamBuilder 与 initialData 和 null-awareness