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

时间:2018-06-04 15:04:04

标签: mfc scrollbar

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

Example

滚动条应该:

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

你建议:

  1. 从头开始创建所有内容,处理分页,滚轮等。

  2. 尝试继承CScrollBar并自己绘图?

  3. 从我读过的内容来看,在MFC中自定义滚动条并不是一件容易的事,例如here

1 个答案:

答案 0 :(得分:0)

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

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

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

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

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