前提:我需要更改MFC中定义的默认CScrollBar
的颜色(拇指+轨迹+箭头),但是经过研究后,我意识到这并不是一件容易的事。
问题:如果尝试在现有滚动条上绘制,还是应该从头开始创建新的滚动条控件会更好?
OnPaint()
方法中重绘。 我已经看过此链接:
https://www.codeproject.com/Articles/14724/Replace-a-Window-s-Internal-Scrollbar-with-a-custo
但是建议的方法似乎不适用于Windows的较新版本(从Vista开始)。
任何建议表示赞赏,在此先感谢。
最佳答案
我们遇到了完全相同的问题,而您尝试覆盖原始滚动条的尝试是我们首先尝试的。由于某些问题,我们再次放弃了该尝试,我不记得很详细(未收到所有鼠标或绘制消息,闪烁,...)。我们的解决方案需要一些努力,但现在可以使用:
我们首先实现了一个CCustomScrollBar类,它不是从CScrollBar派生的,因为CScrollBar只是Windows实现的包装,并且重写OnPaint()并不完美。是的,所有事情都必须从头开始实现。
其次,我们实现了一个模板类CWndCustomScrollBar,该类保留了两个CCustomScrollBars并对其周围的所有对象进行管理,就像标准窗口将使用其嵌入式滚动条一样。然后可以通过GetClientRectWithoutScrollBar()方法实现免费的客户区域,使其工作与标准窗口相似。
关于c++ - 使MFC滚动条蒙皮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59047942/