【发布时间】:2018-06-28 16:13:47
【问题描述】:
我一直在更新现有的 Win32 应用程序以支持 DPI。按照 MSDN 和其他网站上的各种指南,我根据当前显示器 DPI 手动缩放坐标和字体大小。
我偶然发现了这条消息:CCM_DPISCALE。文档说:
在树形视图中启用自动每英寸高点 (dpi) 缩放 控件、列表视图控件、ComboBoxEx 控件、标题控件、 按钮、工具栏控件、动画控件和图像列表
但它实际上做什么?我尝试像这样将消息发送到我的控件:
SendMessage(hWnd, CCM_DPISCALE, (WPARAM) TRUE, 0);
但它在任何 DPI 下对字体、大小、布局都没有明显影响。
根据文档,我正在使用Comclt32.dll 6.0 版。
我在谷歌上搜索此消息时唯一能找到的参考是那个 MSDN 页面,以及来自 LVCOLUMNA 文档的链接。
这条消息实际上应该做什么?
【问题讨论】:
-
不知道这个消息是做什么的,但是找到了a source file where it's used。您的清单中有兼容性部分吗?如果您未指定与特定操作系统版本的兼容性,系统可能会忽略该消息。
-
在我的 .exe 头文件中,我有:
6.00 operating system version 6.00 subsystem version -
@zett42 很有趣,谢谢。该链接仅讨论 Windows 8 及更高版本的清单。由于自 Vista 以来(据称!)支持 CCM_DPISCALE,我不确定这是否相关?
-
示例清单也包括 Vista。
标签: winapi