wordpress   发布时间:2022-04-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在Windows 8上声明每个窗口的高DPI感知大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我正在开发在Cubase等主机中运行的音频插件,我希望增加高DPI支持.这是有问题的,因为我所知道的所有主机应用程序都声明自己具有非高DPI感知能力,因此所有窗口都由DWM自动缩放.我正在寻找一种方法来关闭插件窗口的DWM DPI缩放,即使主机本身不支持DPI(因此它对所有其他窗口使用DWM DPI缩放).有谁知道这是否可行? 对于使用大量插件的应用程序,例如音频主机,这是一个非常现实的问题,因为
我正在开发在Cubase等主机中运行的音频插件,我希望增加高DPI支持.这是有问题的,因为我所知道的所有主机应用程序都声明自己具有非高DPI感知能力,因此所有窗口都由DWM自动缩放.我正在寻找一种方法关闭插件窗口的DWM DPI缩放,即使主机本身不支持DPI(因此它对所有其他窗口使用DWM DPI缩放).有谁知道这是否可行?

对于使用大量插件的应用程序,例如音频主机,这是一个非常现实的问题,因为它们不能继续并声明自己是高DPI意识:这会破坏所有现有的插件.因此,除非Windows为此提供解决方案,否则我们总是停留在96 dpi的土地上.基本上我认为我们需要一个比设置每个进程更精细的解决方案,因此主机和插件可以单独声明其感知级别.

如果目前无法完成此操作,是否可以联系Microsoft工程师以便将其添加到Windows的未来版本中?

解决方法

自Windows 10周年更新以来,每个窗口现在可以实现DPI感知.
新的API SetThreadDpiAwarenessContext()可用于设置每个窗口和每个线程的DPI感知.这完成如下.

>线程现在可以动态更改其DPI意识.
>线程创建的窗口的DPI感知将取决于创建窗口时调用线程的DPI感知.
>当调用窗口的Windows过程时,线程会自动切换到创建窗口时正在使用的DPI感知上下文.

阅读以下参考资料.

> https://msdn.microsoft.com/en-us/library/windows/desktop/mt744321(v=vs.85).aspx
> https://github.com/Microsoft/Windows-classic-samples/…/DPIAwarenessPerWindow/
>(阅读自述文件)https://github.com/Microsoft/Windows-classic-samples/tree/96f883e4c900948e39660ec14a200a5164a3c7b7/Samples/DPIAwarenessPerWindow

大佬总结

以上是大佬教程为你收集整理的在Windows 8上声明每个窗口的高DPI感知全部内容,希望文章能够帮你解决在Windows 8上声明每个窗口的高DPI感知所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: