我有一个高dpi感知的MFC应用程序。该应用会显示CTreeCtrl
,可在不同的dpi设置下正确绘制展开/折叠(例如+/-)字形。这是一个200%的片段。
为了呈现更现代的外观,我将树形控件的主题设置为Windows资源管理器的主题,方法是将其添加到树形控件的PreSubclassWindow
上面:<\ n / p>
SetWindowTheme(m_hWnd, L"Explorer", NULL);
树控件现在像Windows资源管理器一样绘制展开/折叠字形,这很酷。但是,字形在高dpi设置下不会缩放。这是另一个200%的片段
主题部分大小为200%, - GetThemePartSize(td, NULL, TVP_GLYPH, GLPS_OPENED, NULL, TS_DRAW, &size)
- 为32像素。显然,随着dpi的增加,探索者主题的字形不会增大。
有没有其他人运行int,如果是这样,你找到了解决方案(除了所有者/自定义绘制树控件?
Visual C ++ 2015。
提前致谢...
答案 0 :(得分:1)
我发现高dpi问题与设置Windows主题无关。 CTreeCtrl有一个高dpi错误,因为无论是否设置Windows,扩展/折叠(例如+/-)字形都没有正确缩放。
如果以不同的dpi比例调用// Arrange
Set up a section with some data.
Assume.That(section exists with data) // optional, in case setup fails
// Act
Delete the section
// Assert
Try to get the data in the section
Assert.That(no data is found)
,您将看到返回的矩形的高度已缩放(由于缩放的字体),但宽度不是。因此,我认为这个主题的问题只是一种幻觉,因为主题扩展/折叠字形具有更透明的像素。
抱歉浪费每个人的时间......