蒙皮 MFC 滚动条
Skinning MFC scrollbar
Premise: 我需要更改 MFC 中定义的默认 CScrollBar
的颜色(缩略图 + 轨道 + 箭头), 但在做了一些研究后我意识到这并不是一件容易的事。
问题:如果我尝试在现有滚动条上绘制会更好,还是我应该创建一个新的滚动条控件从头开始?
- 如果我限制自己在上面绘图,我的优势是不必管理处理滚动条其他功能的所有消息(除了绘图),但它非常复杂找到 windows 重绘滚动条的所有点,因为只有在
OnPaint()
方法中才不会重绘滚动条。
- 如果我从头开始重做,我将不再有识别重绘栏的所有点的问题......但另一方面我应该从头开始重新实现所有滚动条功能。
我已经看过这个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 类似。
Premise: 我需要更改 MFC 中定义的默认 CScrollBar
的颜色(缩略图 + 轨道 + 箭头), 但在做了一些研究后我意识到这并不是一件容易的事。
问题:如果我尝试在现有滚动条上绘制会更好,还是我应该创建一个新的滚动条控件从头开始?
- 如果我限制自己在上面绘图,我的优势是不必管理处理滚动条其他功能的所有消息(除了绘图),但它非常复杂找到 windows 重绘滚动条的所有点,因为只有在
OnPaint()
方法中才不会重绘滚动条。 - 如果我从头开始重做,我将不再有识别重绘栏的所有点的问题......但另一方面我应该从头开始重新实现所有滚动条功能。
我已经看过这个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 类似。