【问题标题】:Enable DPI Awareness setting has no effect (VisualStudio 2017)启用 DPI Awareness 设置无效 (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,你可能不会有任何问题,但如果你不能,也许可以看到这里(和链接的文章):stackoverflow.com/q/46428510/10871073
  • 奇怪的是,“启用 dpi 感知:是”不是粗体,因为这不是默认设置。您的解决方案配置有问题。
  • @AdrianMole Edward 说额外的清单合并。这不会发生在我身上。所以我认为我的解决方案配置坏了。
  • 我找到了一篇关于manifest set的文章。在该 VC++ 项目的设置中,Additional Manifest Files 设置为 X-dpi.manifestEnable Dpi manifest 设置为 No。希望对你有帮助。
  • 有趣的是:如果我右键单击 .exe 并让程序 dpi 知道它可以工作。清单和解决方案设置将不起作用。这不是真正的答案......但它现在有效。

标签: c++ visual-studio-2017 manifest


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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-19
    相关资源
    最近更新 更多