C++ Windows API - 如何检索字体缩放百分比

Posted

技术标签:

【中文标题】C++ Windows API - 如何检索字体缩放百分比【英文标题】:C++ Windows API - How to retrieve font scaling percentage 【发布时间】:2020-11-11 11:20:33 【问题描述】:

我想在 C++ Windows API 应用程序中检索 “使文本变大” 百分比。我知道如何检索缩放 (DPI) 因子,但我还想包括字体缩放百分比(请参见附图,上限值,而不是下限值)。

最终,我想制作保留用户字体和 DPI 缩放设置的应用程序,以完全支持辅助功能。目前,字体在.rc文件中指定,如下所示

FONT 8, "MS Shell Dlg 2", 0, 0, 0x0

但即使省略 FONT 语句,更改“使文本变大”设置时字体仍然不会改变。

【问题讨论】:

GetScaleFactorForMonitor ? docs.microsoft.com/en-us/windows/win32/api/shellscalingapi/… @Simon Mourier 据我了解,设置仅返回第二个值,因此 DPI 缩放,而不是字体大小 有一个winrt API:docs.microsoft.com/en-us/uwp/api/… 否则TextScaleFactor 注册表项中的TextScaleFactorHKEY_CURRENT_USER\SOFTWARE\Microsoft\Accessibility(未正式记录) @SimonMourier 非常感谢,这正是我一直在寻找但找不到的东西!如果您愿意,请发布答案以供将来参考和一些声誉:) 【参考方案1】:

对于“让一切都变大”部分,您可以使用GetScaleFactorForMonitor

获取特定监视器的比例因子。

对于“使文本变大”部分,您可以使用 WinRT 静态属性:UISettings.TextScaleFactor

获取系统文本大小设置的值。

否则也可以使用TextScaleFactor读取后者 HKEY_CURRENT_USER\SOFTWARE\Microsoft\Accessibility 注册表项中的 DWORD 属性(但未正式记录)。

【讨论】:

以上是关于C++ Windows API - 如何检索字体缩放百分比的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 C++ 在 Windows 上检索分页文件大小的“最小允许”/“推荐”/“当前分配”值?

在 MSVC 中压缩后可能的数据损坏? (C++)

c语言中windows 调用api实现字体颜色,字体,以及动画

从单元格中检索多个字体数据

通过 Windows 的 API 检索 PCI 坐标(用户模式)

如何使用 Windows 运行时使用 C# 实现 C++ API?