WM_DPICHANGED message

2023-05-16

原文

WM_DPICHANGED message

当窗口的 DPI 改变时将收到此消息。DPI 是窗口的缩放比例。有多种情况会导致 DPI 改变,如下表列出:

  • 窗口被移动到有不同 DPI 的显示器。
  • 窗口所在显示器的 DPI 发生改变。

Sent when the effective dots per inch (dpi) for a window has changed. The DPI is the scale factor for a window. There are multiple events that can cause the DPI to change. The following list indicates the possible causes for the change in DPI.

The window is moved to a new monitor that has a different DPI.
The DPI of the monitor hosting the window changes.

窗口的 DPI 总是为最后一个 WM_DPICHANGED 消息告知的 DPI。……

The current DPI for a window always equals the last DPI sent by WM_DPICHANGED. This is the scale factor that the window should be scaling to for threads that are aware of DPI changes.

#define WM_DPICHANGED       0x02E0

参数

wParam

wParamHIWORD 是这个窗口 Y 方向的新 DPI,LOWORD 是这个窗口 X 方向的新 DPI。典型的值有:96,120,144,192。对于 Windows apps 来说,这两个值总是相同的。

lParam

一个指向 RECT 结构的指针,里面包含了这个窗口在新的 DPI 下的建议大小和位置。最好在处理这条消息时窗口按 lParam 的建议进行大小和位置的调整。

返回值

如果处理了这条消息,应该返回 0。

备注

这条消息只与设置了 PROCESS_PER_MONITOR_DPI_AWARE 的应用或者设置了 DPI_AWARENESS_PER_MONITOR_AWARE 的线程有关。虽然你的不支持 DPI 识别(DPI unaware)或者支持系统 DPI 识别(system DPI aware)的顶层窗口也可能会收到这条消息,但在这种情况下这条消息可以放心地忽略掉。……

你只需要使用 X 和 Y 方向中的一个就可以了,因为它们是相同的。

为了正确处理这条消息,建议按照 lParam 的建议来并且使用 SetWindowPos 函数。如果你不这么做,你的窗口将会小得一批或大得一批。

DPI 的基础值被定义为 USER_DEFAULT_SCREEN_DPI,值为 96。……

举个例子:

    case WM_DPICHANGED:
    {
        g_dpi = HIWORD(wParam);
        UpdateDpiDependentFontsAndResources();

        RECT* const prcNewWindow = (RECT*)lParam;
        SetWindowPos(hWnd,
            NULL,
            prcNewWindow ->left,
            prcNewWindow ->top,
            prcNewWindow->right - prcNewWindow->left,
            prcNewWindow->bottom - prcNewWindow->top,
            SWP_NOZORDER | SWP_NOACTIVATE);
        break;
    }

……

系统需求

Windows 8.1 及以上(仅桌面程序)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WM_DPICHANGED message 的相关文章

  • 使用 JBoss 将消息发布到远程 JMS 队列

    这看起来很简单 但我找不到简单的答案 我想打开到远程 JMS 代理的连接 IP 和端口已知 打开到特定队列 名称已知 的会话并向该队列发布消息 是否有任何简单的 Java API 如果可能的话 标准 可以做到这一点 EDIT 好吧 我现在明
  • Inno Setup - 更改 MessageBox 语言

    我有这个问题 我做了一个个人消息框 我以一种非常有趣的方式输入了英语和西班牙语 但我希望我的安装程序只显示一种语言 就像 当我在菜单选择器西班牙语 在该消息框中显示西班牙语 如果在菜单选择器中选择意大利语 让该消息框显示意大利语 code
  • 观察新的系统通知 OSX

    是否可以监听 观察 macOS 收到的新通知 我的意思是当收到新的 iMessage 或 Slack 消息时 所以基本上导致通知中心显示通知的所有内容 简短回答 这是不可能的 除非应用程序提供特定的 API 否则您无法观察应用程序发送的用户
  • pjsip接收短信

    任何人都知道有关如何设置 pjsip 客户端来接收消息的任何好例子 我可以使用以下方式从客户端发送消息 pjsua im send sip acc id to NULL msgbody NULL NULL 到任何数字 但我不知道如何才能将消
  • 没有提交消息的 Git 提交

    如何在不指定提交消息的情况下提交更改 为什么默认需要它 git 通常需要非空消息 因为提供有意义的提交消息是良好开发实践和良好存储库管理的一部分 提交消息的第一行在 git 中随处可见 欲了解更多信息 请阅读 关于 Git 提交消息的注释
  • 在表视图单元格中显示多行 - IOS

    我想在我正在开发的 IOS 应用程序的表格单元格视图中显示多行 准确地说 我有一个表视图 其中将填充从服务器返回的 JSON 数据 如果返回的状态为 0 或 2 状态是为配置文件返回的 JSON 对象之一 我必须显示 5 6 行的错误消息
  • 获取 Spring MessageContext

    如何获得春天MessageContext来自 Java 类 我应该使用一些 Resource or Autowire注射contextvar 到类 或者 例如 使用一些全局上下文 SpringContext 或其他一些以获得MessageC
  • 如何在 Python 中使用自定义消息引发相同的异常?

    我有这个try我的代码中的块 try do something that might raise an exception except ValueError as err errmsg My custom error message ra
  • 有谁知道ShellHook消息HSHELL_RUDEAPPACTIVATED是什么意思?

    我正在编写建立 shell 挂钩来获取 shell 事件的应用程序 如果重要的话 我正在使用 C 我正在使用这个例子 http msbob spaces live com blog cns DAFD19BC5D669D8F 132 entr
  • 来自 Process.MainWindowHandle 的 C# HwndSource

    我试图 挂钩 窗口的消息来检测最小化 最大化 我环顾四周 认为执行此操作的唯一 最佳解决方案是挂钩窗口的消息 并检查 WM WINDOWPOSCHANGED 消息 然后检查其状态 我遇到了问题 System Windows Interop
  • 在 Ruby 中构建长字符串的简洁方法

    在编写 Ruby 客户端脚本 时 我看到了三种构建更长字符串的方法 包括行结束符 所有这些对我来说 闻起来 都有点难看 有没有更干净 更好的方法 变量递增 if render quote quote Now that there is th
  • 如何在 Yii2 验证规则消息中添加换行符

    我需要打破 Yii2 验证规则中使用的长消息 我尝试这样 public function rules return username required message gt long message first line here br P
  • 如何从一个模块向另一个模块发送消息?

    Angular有模块间通信的集成解决方案吗 如何将数据从一个模块发送到另一个模块 也许有一些事件循环 我将有一个您的两个通信模块所依赖的通用模块 公共模块将通过公开一个中介者模式来提供中介者模式的实现 service https docs
  • 批处理cmd中弹出消息

    echo msgbox Hey Here is a message gt tmp tmp vbs cscript nologo tmp tmp vbs del tmp tmp vbs or echo msgbox Hey Here is a
  • 如何覆盖 Struts 2 消息?

    这是我的 struts xml 的一部分
  • 在数据库中存储从客户收到的 hl7 消息的最佳方法

    大家好 我是新欢 我想知道将 hl7 消息存储在 mysql 数据库中的表中的最佳方法 该表仅将一列存储为 hl7 消息 或者存储在行和列中 例如发送应用程序列 接收应用程序列等 我无法找到合适的答案 所以请帮助我 提前致谢 解析 HL7
  • JSF 2.0 validateRegex 带有自己的验证器消息

    我有一个与此类似的代码
  • 向 Windows 窗体消息循环发送或发布消息

    我有一个线程从命名管道读取消息 它是阻塞读取 这就是它在自己的线程中的原因 当该线程读取消息时 我希望它通知主线程中运行的 Windows 窗体消息循环消息已准备就绪 我怎样才能做到这一点 在win32中我会做一个PostMessage 但
  • 在 C++\Win32 中编辑控件文本更改消息

    与 NET for C Win32 中的 TextChanged 属性匹配的消息是什么 假设你正在谈论编辑控件 http msdn microsoft com en us library bb775458 VS 85 aspx EN CHA
  • Azure消息队列中的消息将直接进入Poison消息队列

    希望这可以节省某人一些时间 当移动到较新的版本时 下面的代码停止工作QueueClient https learn microsoft com en us dotnet api azure storage queues queueclien

随机推荐

  • Luogu 1397 [NOI 2013] 矩阵游戏

    传送门思路正解参考代码Remarks 传送门 思路 唉 xff0c 我太弱了 xff0c T1 都做不来 xff0c 唉 xff0c 我太弱啦 xff01 显然这个题可以用矩阵快速幂在 O log n O log n
  • Luogu 2414 [NOI 2011] 阿狸的打字机

    文章目录 传送门思路参考代码总结 传送门 思路 首先我们甚至不能单独保存每个字符串 xff0c 因为总长度可以达到 O n 2
  • kali新手入门教学(10)--ping的讲解

    Ping 是 Windows 和 Linux 都自带的一个扫描工具 xff0c 用于校验与远程计算机或本机的连接 只有在安装 TCP IP 协议之后才能使用该命令 Ping 命令通过向计算机发送 ICMP 回应 报文并且监听回应报文的返回
  • Luogu 3628 [APIO 2010] 特别行动队

    传送门思路参考代码 传送门 BZOJ 思路 设 f i f i 表示将 1 i 1 i 的士兵编
  • Luogu 1399 [NOI 2013] 快餐店

    传送门思路参考代码Remarks总结 传送门 思路 发现这是一棵环套树 那首先我们会想到树上的情况 如果这是一棵树 xff0c 我们自然会联想到树的直径 xff0c 自然会想到对于树而言 xff0c 答案为直径长度的一半 证明 用反证法 假
  • GDB for C++ in Linux

    这篇文章主要讲讲如何在 Linux 下使用 GDB xff0c 当然 xff0c 就指令而言在 Windows 下也适用 环境Items 编译启动退出加载文件查看源代码断点 插入断点删除断点 运行程序查看变量控制程序执行 继续下一步单步进入
  • CF 1000F One Occurrence

    传送门题目大意思路参考代码总结 时光如梭 xff0c Codeforces 的题号还是三位数的时代已经过去 xff1b 量子语言原来已经来临 传送门 题目大意 给定一个长度为 n n 的序列 a a xff0c 有 m m 个
  • CF 993E Nikita and Order Statistics

    传送门题目大意思路参考代码 传送门 题目大意 给你一个数组 a 1 n a 1 n xff0c 对于 k 61 0 n
  • CF 997A Convert to Ones

    传送门题目大意思路参考代码总结 传送门 题目大意 给你一个长度为 n n 3 10 5 n n 3 10
  • CF 997B Roman Digits

    传送门题目大意思路参考代码总结 传送门 题目大意 现在规定罗马数字只有 4 4 个字符 I V X L 分别代表 1 1 5 5 10 10 50 50
  • CF 997C Sky Full of Stars

    传送门题目大意思路参考代码总结 传送门 题目大意 有一个 n n n 10 6 n n n 10
  • CF 997D Cycles in product

    传送门题目大意思路参考代码总结Remarks参考代码 传送门 题目大意 给你大小分别为 n 1 n 1 和 n 2 n 2
  • NOI 2018 游记

    Day 2Day 1Day 0Day 1Day 2Day 3Day 4Day inftyDay 5 Day 2 昨天打完了最后一个一场模拟赛 xff0c 又垫底啦 xff01 本来之前我很少垫底的 xff0c 不知道为什么最后四场模拟赛一直
  • MySQL集群架构

    第1节 集群架构设计 在集群架构设计时 xff0c 主要遵从下面三个维度 xff1a 可用性 扩展性 一致性 1 1 可用性设计 站点高可用 xff0c 冗余站点 xff1b 服务高可用 xff0c 冗余服务 xff1b 数据高可用 xff
  • CF 1008D Pave the Parallelepiped

    传送门题目大意 样例输入样例输出样例解释 思路参考代码总结 传送门 题目大意 给你一个 A B C A B C 的长方体 xff0c 你要把它切成很多块大小都是 a b c
  • Direct2D 学习笔记

    文章目录 Direct2DD2D 是什么D2D 适合谁开发环境发布平台入门我能找到例子吗一 第一个 D2D 程序 Hello Direct2D1 工厂2 呈现器3 渲染4 运行结果 二 Direct2D 画图实践 Random Graphi
  • Python 学习笔记——入门

    文章目录 Python 是什么一 推荐的教程二 这篇学习笔记适合什么人三 环境1 操作系统对于 Windows对于 Ubuntu对于其他操作系统 2 Python对于 Windows安装步骤1 下载2 安装 测试是否成功安装退出 Pytho
  • CF 1166A Silent Classroom

    文章目录 传送门题目大意思路别人的思路参考代码Python 学习笔记 传送门 题目大意 有 n n 100
  • SHGetKnownFolderPath function

    原文 SHGetKnownFolderPath 通过一个 KNOWNFOLDERID 标志获取对应已知文件夹的完整路径 Retrieves the full path of a known folder identified by the
  • WM_DPICHANGED message

    原文 WM DPICHANGED message 当窗口的 DPI 改变时将收到此消息 DPI 是窗口的缩放比例 有多种情况会导致 DPI 改变 xff0c 如下表列出 xff1a 窗口被移动到有不同 DPI 的显示器 窗口所在显示器的 D