首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何创建一个与Windows 7向后兼容的缩放和大小变化的每个监视器新闻部感知的应用程序?

如何创建一个与Windows 7向后兼容的缩放和大小变化的每个监视器新闻部感知的应用程序?
EN

Stack Overflow用户
提问于 2015-08-19 12:39:37
回答 1查看 1.5K关注 0票数 6

我刚接触过WPF (以及新闻部感知DPI ),并且正在编写一个在Windows 7、8.1和10中运行的应用程序。我使用多个监视器,每个监视器具有不同的DPI设置,并且对使我的应用程序在桌面配置中尽可能兼容感兴趣。

我已经知道,可以将Manifest添加到WPF应用程序中,取消新闻部意识部分的注释,并将其设置为True/PM。这成功地允许程序在Windows8.1和10 (因此在各种监视器上看起来干净和清晰)中感知到每个监视器,但在Windows 7中作为系统感知运行。

但我们能做得更好吗?微软提供了一个这里的“整洁教程”展示了如何创建一个支持DPI的每个监视器。 WPF应用程序。他们实际上是在C++中创建一个新的对象,以取代使用Windows8.1API的<Window>,该对象不仅可以检测监视器之间的DPI变化,还可以在运行时重新调整应用程序的大小,从而有效地匹配DPI中的更改。最终的结果是,这款应用不仅能感知到每个新闻部的应用程序,而且在不同大小的显示器之间切换时,该应用程序会让用户改变屏幕上相同的物理尺寸(以英寸或厘米为单位)。

微软的Win32代码的缺点是它与Windows 7不向后兼容。尝试在7中运行会导致应用程序崩溃。

我已经通过了本文是关于Dr.Dobbs的这是肯尼·卡尔写的,但是对API的理解还不够好,无法让事情正常进行。

有没有人知道一种类似于微软代码的方法,在Windows8.1和更新版本中,每个监视器感知的应用程序实际上会在显示器之间移动时改变大小,但在Windows 7中作为系统感知运行呢?

EN

回答 1

Stack Overflow用户

发布于 2015-12-28 07:30:59

我还没有看过代码,但我的猜测是,造成崩溃的原因是win 7中缺少本机方法。

代码语言:javascript
复制
public int GetDPIOfMonitor(IntPtr monitorHandle)
{
   if (Enviroment.OSVersion >= "6.2") // win 8 and above
   {
      return NativeMethods.PInvoke.GetMonitorDPI(monitorHandle);
   }
   else return systemDPI;
}

这样您就不会在7以下崩溃,因为您没有调用丢失的本机方法。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32095775

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档