【问题标题】:Custom slider control in MFC (visual studio)MFC(Visual Studio)中的自定义滑块控件
【发布时间】:2026-02-17 12:15:01
【问题描述】:

我在 MFC 的 Visual Studio 中制作滑块控件,我想将范围设置为 14 到 100,步长应为 0.25,如 14.25、14.50、14.75。

怎样才能做出自定义的滑块控件?

【问题讨论】:

  • 制作一个范围从 0 到 (100-14) * 4 的滑块。其余的是基本的基础学校数学。
  • 您会发现以 1 为步长从 56-400(或 0-344)的范围变得更容易(实际上是可能的),然后进行数学运算以细分该值每当你阅读它。警告:自从我在 win32 中进行自定义控件以来,它一直 永远,但我记得滑块需要整数表示其范围。
  • 你有任何更新吗?如果您的案例已经解决,请帮忙标记答案。如果没有,请随时与我们联系。您的理解与合作将不胜感激。

标签: c++ visual-studio visual-c++ mfc slider


【解决方案1】:

CSliderCtrl 包装了trackbar 控件。因此,前者与后者具有相同的限制。具体来说,范围是通过TBM_SETRANGE 消息(或TBM_SETRANGEMINTBM_SETRANGEMAX 消息)设置的。任何一条消息都采用整数值,因此您不能让控件对小数值进行操作。

如果您需要控件支持的整数值来表示小数值,则必须在客户端代码中执行映射(缩放和转换)。可能的映射是:

  • 设置范围从0 * 4(100 - 14) * 4(即0344)。控制位置x代表值14 + x / 4
  • 设置范围从14 * 4100 * 4(即56400)。控制位置x则代表值x / 4

一般来说,小数值在使用浮点值时无法准确表示。但是,在这种情况下,准确性并没有损失;任何整数值除以 2 的幂(例如 4)都可以准确地表示为浮点值(只要结果仍在范围内)。

【讨论】:

    最近更新 更多