Windows 10、DPI 缩放和全屏

2024-01-21

我有一个应用程序,Windows 8.1 中的 PROCESS_PER_MONITOR_DPI_AWARE 和 Windows 10 v1703 中的 DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2 。我的窗口在窗口模式下具有 WS_OVERLAPPEDWINDOW 样式,并且在全屏显示时将它们切换为监视器大小的 WS_POPUP。

当我更改同一显示器上的 DPI 时,窗口模式窗口会在 Windows 8.1 和 Windows 10 v1703 上的 WM_DPICHANGED 消息中获得正确缩放的窗口大小。然而,当全屏时,Windows 8.1 不会调整全屏窗口的大小(它保持相同的尺寸),但 Windows 10 v1703 会这样做。这意味着,96 dpi 的 2560x1440 全屏窗口在 Windows 8.1 上保持 2560x1440,例如 144 dpi,但在 Windows 10 v1703 上调整为 3840x2160。

这是正常的吗?即,在接收 WM_GETDPISCALEDSIZE 消息时,我现在应该手动执行保持全屏窗口相同大小的操作,而这在 Windows 8.1 上是自动完成的?

编辑:经过进一步测试,如果窗口是全屏,则 WM_GETDPISCALEDSIZE 消息似乎不会发送,只有在窗口化时才会发送(WS_POPUP 有效,但仅当大小与监视器不同时)。因此,我什至无法覆盖此行为,并且 Windows 8.1 对于全屏窗口的工作方式与 Windows 10 v1703 不同。


尝试这个:

void ShowFullScreen(HWND hwnd)
{
  LONG exStyle = ::GetWindowLong(hwnd, GWL_EXSTYLE);
  LONG style   = ::GetWindowLong(hwnd, GWL_STYLE);

  ::SetWindowLong(hwnd, GWL_STYLE,
                        (style & ~WS_OVERLAPPEDWINDOW) | WS_POPUPWINDOW);
  ::SetWindowLong(hwnd, GWL_EXSTYLE, exStyle | WS_EX_TOPMOST);
  ::ShowWindow(hwnd, SW_SHOWMAXIMIZED);
}

是否有助于解决W8.1上的问题?

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

Windows 10、DPI 缩放和全屏 的相关文章

  • 用C#排列桌面图标

    好吧 伙计们 这就是我想要实现的目标 我希望所有无序的桌面图标在单击按钮时都排列在桌面的左上角 这是我正在使用的代码 DllImport user32 dll private static extern IntPtr GetDesktopW
  • Windows EventLog:它的操作速度有多快?

    我有一个服务应用程序 它通过 TCP 处理客户端请求并将任何事件写入 Windows EventLog 由于该应用程序预计会在短时间内为许多客户端和每个客户端的大量请求提供服务 假设每秒 1 到 50 个请求 因此我很想知道密集程度 CPU
  • 了解 Windows 10 何时处于平板电脑模式 - Windows 10 / Windows 10 Mobile

    我致力于开发适用于 Windows 10 和 Windows 10 Mobile 的通用应用程序 有谁知道如何检查 Windows 10 是否在平板电脑模式下运行 我在这里找到了这个问题 但这是针对 Windows 窗体的 如何在 Wind
  • 如何通过 JavaScript 访问屏幕显示的 DPI 设置? [复制]

    这个问题在这里已经有答案了 有没有办法在 Javascript 函数中访问屏幕显示的 DPI 设置 我试图在页面上放置一个 HTML 面板 当用户的 DPI 设置为大 120 时 它会丢失该位置 我需要知道 DPI 是多少 以便我可以相应地
  • 获取正在运行的程序的属性

    我想开发一个程序 其 ID 是一张牌 因为它在另一个正在运行的程序 例如扑克或红心游戏或其他程序 中播放 我首先尝试获取有关已运行的游戏程序的所需信息 但我从一开始就遇到了问题 我正在运行 MSVC 2013 并开发 MFC 应用程序 现在
  • Windows 10 Fall Creators Update (1709) 后,log4net 处理呼叫者位置信息变得非常慢

    我知道 log4net 的文档指出 记录调用者位置信息可能非常慢 除非软件的性能不受影响 否则不应使用 在 Windows 10 秋季创意者更新之前 情况都是如此 这是一个小示例项目 应用程序配置
  • Windows XP 风格:为什么我们在静态文本小部件上得到深灰色背景?

    我们正在使用 C 和 Win32 编写 Windows 桌面应用程序 我们的对话框具有 Windows XP 风格 的丑陋外观 静态文本的背景是灰色的 如果对话框背景也是灰色 这不是问题 但在背景为白色的选项卡控件内 文本的灰色背景非常明显
  • 全屏 Exoplayer

    我尝试用以下内容显示节目视频 mp4 外播放器 in 回收视图 and 浏览器 我展示了具有自定义布局的视频控制器 到目前为止 一切都很好 现在尝试像其他视频播放器一样全屏播放视频 但在中找不到好方法外播放器 doc 谁能帮我 ExoPla
  • 在 C++\Win32 中编辑控件文本更改消息

    与 NET for C Win32 中的 TextChanged 属性匹配的消息是什么 假设你正在谈论编辑控件 http msdn microsoft com en us library bb775458 VS 85 aspx EN CHA
  • Windows 10 上具有 kernel32.dll 的 Dependency Walker

    我尝试打开kernel32 dll在 Windows 10 上使用 Dependency Walker 我收到以下错误和警告 错误 未找到至少一个所需的隐式或转发依赖项 警告 至少未找到一个延迟加载依赖模块 Screenshot 我运行的是
  • Windows下如何分配非分页内存

    当我使用 cudaHostAlloc 时 它将分配非分页 固定 页面锁定 内存 我想知道如何在没有 cuda 的情况下仅使用 Windows SDK 来做到这一点 None
  • Windows 上的本机窄字符串编码是什么?

    Subversion API 有一个功能数量 http subversion apache org docs api latest svn utf 8h html用于从 本机编码 字符串转换为以 UTF 8 编码的字符串 我的问题是 Win
  • 如何修复 Visual Studio Code 终端中的“分段错误”错误?

    在 Windows 10 上 我安装了 Visual Studio Code 当我打开终端 Git Bash 并输入less watch compiler 我收到错误 分段故障 但是如果我转到 Git Bash 终端本身 在 Visual
  • WPF 应用程序在每个系统规模上具有相同的大小(与规模无关)

    有没有办法让 WPF 应用程序在每个系统规模上获得相同的大小 当我改变时更改文本 应用程序和其他项目的大小在windows系统设置中125 推荐 to 100 在全高清屏幕中 我的 WPF 应用程序变得太小 为了实现独立的系统缩放应用程序
  • 检测 Windows 重新启动是否是由于 Windows 更新造成的

    我的电脑上的一些应用程序一直在检测 Windows 更新是否重新启动 这是可以观察到的 因为它们会在 Windows 更新自动重启后重新启动 这非常有帮助 因为这些应用程序会重新加载更改 甚至unsaved更改或恢复选项卡 如果是浏览器 执
  • “此应用程序只能在应用程序容器的上下文中运行。” - Visual Studio 2015 开发新手

    我有点绝望了 我几个小时以来一直在尝试解决以下问题 我开发了一个应用程序 现在尝试使用 Visual Studio 2015 的安装向导扩展来安装 一切都在构建或 没有错误 但是当我打开应用程序时 它突出显示它只能在应用程序容器的上下文中打
  • 如何用C语言测量时间?

    我想知道某个代码块执行了多长时间 大约 像这样的事情 startStopwatch do some calculations stopStopwatch printf lf timeMesuredInSeconds How 您可以使用clo
  • win32 内容已更改,但除非移动窗口,否则不会显示更新

    我的 win32 GUI 内容每秒都会更改 但除非手动移动窗口 否则不会显示更新 我尝试每秒弹出一个消息框来触发窗口刷新 它成功了 因此 这证明我的内容确实发生了变化 但窗口没有更新 我希望刷新窗口而不是每次都弹出消息框 有没有这样的窗口功
  • 使用 StretchDIBits 使用 Delphi 6 处理条形码图像 - 输出中缺少条形线

    我的应用程序是在 Delphi 6 中开发的 由于后台处理和大量数据 它消耗大约 60MB 120MB 物理内存 这是一个资源密集型应用程序 该应用程序的功能之一是在进行某些处理后创建条形码图像 如果用户继续生成条形码 那么至少十分之一的条
  • WaitForSingleObject 是否充当内存屏障?

    昨天一个关于双重检查锁定的问题引发了一系列的想法 让我对一个简单的情况感到不确定 在下面的代码中 是否可以点击printf 不再同步 在这个简单的示例中 这些值可能位于同一缓存行上 因此我认为这种可能性较小 假设一开始可能性 gt 0 如果

随机推荐

  • 如何对非 ASCII 字符使用 tolower 函数

    我正在尝试对非 ASCII 字符应用较低的函数 以下代码在Linux Ubuntu 环境中不起作用 但在Windows中有效 int main std string data std transform data begin data en
  • Java:来自 class.getResource( ... ) 的 NullPointerException

    我正在编写一个小型应用程序 当我尝试创建 ImageIcon 时 我总是遇到异常 异常是由这行代码引起的 prayerLevel setIcon new ImageIcon getClass getResource icons icon p
  • 使用原始文件的共享外部包?

    我们有一些项目依赖共享类型进行通信 团队决定使用这些类型的共享包 并希望使用协议缓冲区来实现此实现 如果重要的话 语言是 Go 并且所有这些项目都不是公开的 我们如何使用项目中未定义的协议缓冲区类型 我似乎无法找到一种在应用程序之间共享完全
  • 在 C 扩展中定义 Python 枚举 - 我这样做对吗?

    我正在开发一个 Python C 扩展 我想公开一个完全在 C 中定义的自定义枚举 如 继承自 enum Enum 的类 事实证明这不是一个简单的任务 并且使用常规的继承机制 tp base不起作用 很可能是由于 Enum 的元类没有被引入
  • 在 C 中更改 .bin 文件的数据

    我有很多数据以 bin 格式存储为结构序列 我希望能够随机读取任何结构并在 C 中修改它 我正在尝试使用以下代码 但它不起作用 有人可以帮我解决吗 另外 是否可以从中间的文件中删除中间结构 代码如下 include
  • 从静态域提供 CSS

    我想从静态无 cookie 域提供我的 CSS 和图像 现在我的问题是如何指向 css 文件中的图像 我不想在 css 文件中对我的域进行硬编程 例如 http static com image png http static com im
  • 在搅拌机 2.76 中将装备重量从一个网格转移到另一个网格

    我最近开始使用搅拌机来创建我自己的游戏模型等 我创建了一个模型 对其进行了装备 单独创建了衣服 现在我想将这些衣服添加到我的模型中 以便它随装备移动而不会刺穿皮肤 因此 有很多使用重量转移工具的解决方案 但我似乎无法在 Blender 2
  • 如果设计师可以使用@font-face,为什么还要使用 sIFR?

    如果设计师可以使用 font face 为什么还要使用 sIFR font face 有什么问题吗 font face font family Hacen Tehran eot src url Hacen Tehran eot font f
  • 查询执行速度非常慢,有什么办法可以进一步改进它吗?

    我有以下查询 并且由于很多SUM函数调用 我的查询运行太慢 我的数据库中有很多记录 我想为每条记录获取今年和去年 过去 30 天 过去 90 天和过去 365 天 的报告 SELECT b id as ID d Title as Title
  • 如何在 R 中将字符串转换为日期

    有什么方法可以将下面的字符串转换为标准 R 日期类对象吗 Date String 19th January 2020 任何指针表示赞赏 Lubridate 可以处理它 gt Date String lt 19th January 2020
  • 在 mysql 查询中列出 null 和 not null

    假设我有桌子 NAME ID REF foo1 1 NULL foo2 2 1234 foo2 3 567 foo1 4 NULL foo3 5 89 我想在一个查询中计算 NULL 和 NOT NULL 的所有实例 这样我就可以说 NAM
  • Python 如何从 .egg 文件导入模块?

    我怎样才能打开 init pyc here gt gt gt import stompservice
  • 如何使用 php Excel 生成漂亮的 PDF?

    我正在使用最新的 PHPExcel 版本 我认为是 7 7 我能够生成我的Excel 我必须使用 tcpdf 生成 pdf 版本 这里别无选择 但结果是丑陋且过大 请参阅 2012 000012 的巨大字体大小 在 Excel 中为 11
  • PHP next() 不工作

    我正在尝试使用 PHP 制作一个画廊 图像加载正确 但下一个和上一个按钮似乎不起作用 单击图片 1 下的 下一步 您将看到图片 3 但是单击 图片 3 将您带到图片 2 这是正确的 我应该如何更改我的代码以使两者都按顺序进行
  • 在 Play 2.4 with DI 中,如何在“Secured”特征中使用服务类?

    这是一个Play 文档中的授权示例 https www playframework com documentation 2 0 4 ScalaSecurity Authorization 版本 2 0 4 我试图找到此文档的更新版本 但找不
  • 在 IntelliJ 中使用 Scala 工作表很困难

    我正在学习 Scala 函数式编程原理课程 但我在 IntelliJ 中使用 Scala Worksheets 进行快速测试时遇到了很多问题 例如 我建立了一个新的 Scala 项目 在其中创建了一个名为的包对象lecture5 它在文件中
  • 在 R 中下载 Kaggle zip 文件

    我正在尝试直接从 R 代码本身的 Kaggle 空间下载 zip 文件 不幸的是 它的效果并不好 这是发生的事情 对于旧金山犯罪数据集 请访问https www kaggle com c sf crime data https www ka
  • Xcode pbxstrings 文件的用途是什么?

    我有一个 Xcode 项目 需要更改它构建的产品的名称 我仔细地浏览了项目文件 并认为我已经做出了所有可能的更改 最后一步是 grep 项目文件夹中的所有文件以查找旧名称的出现 结果很干净 但是在构建之后 grep 发现一个文件包含多次出现
  • 需要帮助为 SpreadsheetApp 创建 GMAIL Pub/Sub 通知服务(Google Apps 脚本)

    我希望我不必重新发布这个问题 但我的老板将这个问题推到了高优先级 我需要帮助来解决这个问题 我正在尝试使用 GAS 脚本从我的 GSuite 域上的地址提取发布 订阅通知 目前 我正在我的域上进行测试 基本上 我正在尝试完成所有这些材料中描
  • Windows 10、DPI 缩放和全屏

    我有一个应用程序 Windows 8 1 中的 PROCESS PER MONITOR DPI AWARE 和 Windows 10 v1703 中的 DPI AWARENESS CONTEXT PER MONITOR AWARE V2 我