需要MFC自定义滚动条的建议

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了需要MFC自定义滚动条的建议相关的知识,希望对你有一定的参考价值。

我想为自定义绘制的绘图创建自己的滚动条,就像这个图像一样,最好的方法是什么?

Example

滚动条应该:

  • 仅当鼠标悬停在其上时才会显示(淡入/淡出)
  • 成为图的x / y轴的一部分,如图中所示
  • 没有任何箭头按钮,只有拇指更薄,而不是普通的滚动条

你会建议:

  1. 从头开始创建所有内容,处理分页,滚轮等。
  2. 尝试继承CScrollBar并自己绘图?

根据我的阅读,在MFC中自定义滚动条并不是很容易,例如here

答案

首先,这些必须是滚动条(或其他)控件,而不是窗口滚动条(用于滚动窗口)。

其次,声明“在MFC中自定义滚动条不是很容易”,只是部分正确。 MFC是Windows API的“瘦包装”,因此您最好参考Windows滚动条控件的文档。

然后是CScrollBar类,但是看了一下,实际上,它并没有提供比Windows滚动条更多的功能。至于您发布的链接中的示例是一个新的(自定义)控件(自己绘制所有内容),即字面意思是“从头开始”,而不是从CScrollBar继承任何内容。

因此,您必须查看Windows滚动条控件及其提供的内容。看了看,看到了一些东西。不幸的是,似乎没有所有者绘制功能。您可以处理WM_CTLCOLORSCROLLBAR消息,但这只允许您更改颜色。

并且根据文档仅提供背景颜色。这似乎是唯一可能的自定义,除了SBM_ENABLE_ARROWS消息,它可以隐藏箭头。并没有褪色效果。如果这些对您来说足够了,您可以尝试使用Windows / MFC滚动条,否则请尝试编写自己的滚动条。

以上是关于需要MFC自定义滚动条的建议的主要内容,如果未能解决你的问题,请参考以下文章

mfc滚动条的相关问题

求教:关于MFC控件中的滚动条事件........

自定义滚动条

如何用 CSS 改变滚动条的位置?

用MFC画滚动条的小问题

自定义滚动条跨浏览器[重复]