MSDN:

1.  设置当前进程或者线程对dpi设置的感知

SetProcessDpiAwarenessContext function (winuser.h) - Win32 apps | Microsoft DocsSets the current process to a specified dots per inch (dpi) awareness context. The DPI awareness contexts are from the DPI_AWARENESS_CONTEXT value.https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-setprocessdpiawarenesscontextSetThreadDpiAwarenessContext function (winuser.h) - Win32 apps | Microsoft Docshttps://docs.microsoft.com/zh-cn/windows/win32/api/winuser/nf-winuser-setthreaddpiawarenesscontext2. 获取当前系统dpiGetDpiForSystem function (winuser.h) - Win32 apps | Microsoft DocsReturns the system DPI.https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getdpiforsystem3. 接收dpi变更通知
WM_DPICHANGED WinUser.h (的消息) - Win32 apps | Microsoft Docshttps://docs.microsoft.com/zh-cn/windows/win32/hidpi/wm-dpichanged

说明:

1. 设置进程或者线程dpi不同点在于,dpi对ui元素生效的范围不同

2.

The return value will be dependent based upon the calling context. If the current thread has a DPI_AWARENESS value of DPI_AWARENESS_UNAWARE, the return value will be 96. That is because the current context always assumes a DPI of 96. For any other DPI_AWARENESS value, the return value will be the actual system DPI.

You should not cache the system DPI, but should use GetDpiForSystem whenever you need the system DPI value.

3. 要接收系统dpi变化消息,需要设置dpi感知为:

DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE 或者DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2

复杂的用法可以在接收到通知之后重新用SetWindowsPos设置UI中元素的大小,简单的方式就是在收到dpi改变的消息后询问用户是否重启应用以适配新的dpi设置

附:

DPI 几种感知模式的不同:

另外QT 5.6 之后就已经支持对DPI缩放的支持, 在 QApplication 构造之前设置

QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);

就能自动适应不同 dpi 的调整,Qt 6.0 之后已经不提供开关,默认自适应生效。

Windows Dpi 缩放相关推荐

  1. Windows:缩放设置及DPI缩放详解

    摘要:再次遇到软件在显示器上不能显示完全的情况,同样的分辨率同样的软件,一台显示正常一台显示不全.造成这个原因的是在相同分辨率下其设置不同 缩放 比例问题导致,这里记录一下windwos系统如何设置缩 ...

  2. Windows 10“创作者更新”改进了高DPI缩放支持

    即将于下周正式发布的 Windows 10"创作者更新"将带来诸多激动人心的新功能,但它其实还包含了许多底层的小改进,比如更好地支持高 DPI 显示屏.在 Windows 10&q ...

  3. win10禁止dpi缩放在哪_Win10最新DPI缩放技术怎么设置?

    Win10正式版采用了全新的DPI机制,能够让屏幕显示更清晰.这是因为Win10使用了DPI缩放技术,对字体进行全新排版,从而提高Win10分辨率.本文就来介绍一下Win10最新DPI缩放技术怎么设置 ...

  4. win10下anaconda+spyder+keras 下载与设置大全(汉化、环境变量设置、DPI缩放等)

    目录 一.anaconda的下载与安装 1.环境变量的设置 二.spyder的设置 1.spyder的汉化 2.设置spyder的布局.DPI缩放与弹出窗口显示图片 三.keras+TensorFlo ...

  5. windows - DPI (简单明了)

    文章目录 DPI 概念 DPI 的由来和定义 字标准 (磅) 显示的问题(物理世界对应) 逻辑单位 像素点 和 字体的关系 设置DPI DPI 感知应用程序 DWM 缩放 DPI 感知应用程序 GDI ...

  6. html高dpi缩放,浏览器在DPI缩放时变化问题

    在高分辨笔记本电脑上,如果使用了"放大".那么原来在笔记本上很小的字和图就看起来大很多了.看起来舒服. 这个笔记本电脑是 1920 1080 装W10,系统推荐说125%佳.于是设 ...

  7. 1个 pywinauto issue 和 Windows DPI 设置

    1.pywinauto的issue 使用pywinauto时TreeView组件的item的click()方法点击坐标有时会出错,原因和windowsDPI设置有关. (参考issue37, issu ...

  8. Win10强制程序高DPI缩放设置

    起因 工作原因,需要在win10上安装数个古老vc版本(vc6,vc2008,vc2010),但是显示器是2K的,DPI缩放有问题 尝试 VC6比较好解决:右键,属性,兼容性,更改高DPI设置,勾选替 ...

  9. win10禁止dpi缩放在哪_如何在Win10中调整dpi缩放? Win10全局启用dpi缩放设置方法!...

    如何在Win10中调整dpi缩放?在Windows 10 Creators Update(版本1703)的操作中win10更改高dpi设置,我们可以将DPI扩大到200%. 关于如何在win10系统中 ...

最新文章

  1. java项目打成jar和war_maven打包web项目时同时打包为war和jar文件的方法
  2. 设计师要懂布局(一)
  3. linux vim命令跳到67行,Linux学习之Vim/Vi使用(十三)
  4. cad转shp格式带属性_Excel、Word、PPT、CAD办公格式怎么转?方法汇总,可批量
  5. 精通Android自定义View(十六)invalidate方法和requestLayout方法
  6. 广东电信 5.31 因「运维误操作」导致断网:流量突降 1.3 TB
  7. 苹果软解ID软件(X.PASSWORD-XIMEI 苹果id锁)--上帝左手汉化组(内附即时更新)
  8. 【Zotero同步管理】【Zotero 6.0 + 坚果云 + iPad官方zotero APP】最新版教程
  9. origin8.1中文乱码设置方法
  10. Jenkins构建项目
  11. 怎么下载老版本android,剪映旧版下载
  12. 指针 转 智能指针_智能指针-它们真的那么聪明吗?
  13. QT官网最新的往期版本下载链接
  14. Adobe CC 2019
  15. 计算机制作表格英语怎么说,表格用英语怎么说
  16. canvas 动态镂空
  17. “北京大妈”名下拥上千车牌被查
  18. vs2008下搭建qt开发环境
  19. 计算机应用类专业综合模拟试卷一,计算机应用专业综合模拟试卷一.docx
  20. Python小游戏:外星人入侵!!!终于完成了!!!

热门文章

  1. 图像meta信息中XMP[drone-dji]如何获取
  2. java人事管理系统_Java课程设计——人事管理系统
  3. 第11课 无线电报机
  4. [附源码]java毕业设计流浪动物救助网站
  5. 5.1linux整理
  6. hubot mysql_WiFeng的博客
  7. C++处理日期和时间的chrono库
  8. java-Google的j2objc可以处理和转换二进制JAR文件吗?
  9. react在线文件_程序猿专用十大在线编译器(IDE)整理,干货收藏
  10. 今天开始在这里记录我的生活