蒙皮 MFC 滚动条

Skinning MFC scrollbar

Premise: 我需要更改 MFC 中定义的默认 CScrollBar 的颜色(缩略图 + 轨道 + 箭头), 但在做了一些研究后我意识到这并不是一件容易的事。

问题:如果我尝试在现有滚动条上绘制会更好,还是我应该创建一个新的滚动条控件从头开始?

我已经看过这个link: https://www.codeproject.com/Articles/14724/Replace-a-Window-s-Internal-Scrollbar-with-a-custo 但建议的方法似乎不适用于较新版本的 Windows(从 Vista 开始)。

感谢任何建议,提前致谢。

我们遇到了完全相同的问题,您尝试透支原始滚动条是我们首先尝试的。由于一些我不记得详细的问题(未收到所有鼠标或绘图消息、闪烁、...),我们再次放弃了该尝试。我们的解决方案需要一些努力,但现在有效:

我们首先实现了一个 class CCustomScrollBar,它不是从 CScrollBar 派生的,因为 CScrollBar 只是 Windows 实现的包装器,覆盖 OnPaint() 并不完美。是的,所有事情都必须从头开始实施。

其次我们实现了一个模板 class CWndCustomScrollBar 保留两个 CCustomScrollBars 并管理它们周围的所有内容作为标准 window 将处理其嵌入式滚动条。然后可以通过 GetClientRectWithoutScrollBar() 方法实现免费客户区,其工作方式与标准 window 类似。