CCM_DPISCALE公共控制消息

时间:2018-06-28 16:13:48

标签: winapi

我一直在更新现有的Win32应用程序以识别DPI。遵循MSDN和其他站点上的各种指南,我根据当前监视器DPI手动缩放坐标和字体大小。

我刚发现以下消息:CCM_DPISCALE。文档说:

  

启用Tree-View中的每英寸高点数(dpi)自动缩放   控件,列表视图控件,ComboBoxEx控件,页眉控件,   按钮,工具栏控件,动画控件和图像列表

但是实际上做什么是什么?我尝试像这样将消息发送到我的控件:

SendMessage(hWnd, CCM_DPISCALE, (WPARAM) TRUE, 0);

但是它对字体,大小,布局-在任何DPI上的任何内容都没有明显的影响。

根据文档,我正在使用Comclt32.dll 6.0版。

在谷歌搜索时,我只能找到该消息的唯一参考是MSDN页面以及来自LVCOLUMNA文档的链接。

这条消息实际上应该做什么?

1 个答案:

答案 0 :(得分:0)

我至少知道这件事的一小部分。

ListView控件中,如果创建的列具有固定宽度(LVCFMT_FIXED_WIDTH),并且只要您未指定LVCFMT_NO_DPI_SCALECCM_DPISCALE就会缩放列宽度根据当前DPI。

如果您拥有LVS_REPORT样式的ListView分组样式,并且组标题包含图像(LVGF_TITLEIMAGE),则该图像也将被缩放(但是不是组文本(LVGF_HEADER

我没有测试此缩放比例是否针对每个监视器,并且没有找到此消息可进行的其他任何操作(尽管根据我的问题,已记录为可实现多个控件)。我有兴趣了解此消息的其他用途!