外观 MFC 滚动条



前提 :我需要更改MFC中定义的默认CScrollBar的颜色(拇指+轨道+箭头(,但是在做了一些研究之后,我意识到这不是一件容易的事。

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

  • 如果我仅限于绘制它,那么我的优势是不必管理处理滚动条其他功能的所有消息(除了绘图之外(,但是找到窗口重绘栏的所有点非常复杂,因为滚动条不仅在OnPaint()方法中重绘
  • 如果我从头开始重做,我将不再有识别重新绘制柱线的所有点的问题......但另一方面,我应该从头开始重新实现所有滚动条功能。

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

任何建议不胜感激,提前感谢。

我们遇到了完全相同的问题,您尝试过度绘制原始滚动条是我们首先尝试的。由于一些我不记得细节的问题,我们再次放弃了尝试(没有收到所有鼠标或绘图消息,闪烁......我们的解决方案付出了一些努力,但现在有效:

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

其次,我们实现了一个模板类 CWndCustomScrollBar,保留了两个 CCustomScrollBar,并像标准窗口一样管理它们周围的所有内容,就像使用其嵌入式滚动条一样。然后可以通过方法GetClientRectWithoutScrollBar((实现自由客户区,其工作方式类似于标准窗口。

最新更新