MFC 中的自定义滑块控件 (visual studio)
Custom slider control in MFC (visual studio)
我正在 MFC 中 visual studio 中制作一个滑块控件,我想将范围设置为 14 到 100,步长应为 0.25,如 14.25、14.50、14.75。
如何制作自定义滑块控件?
条 CSliderCtrl
wraps a trackbar control. As such, the former shares the same limitations with the latter. Specifically, the range is set through the TBM_SETRANGE
message (or the TBM_SETRANGEMIN
and TBM_SETRANGEMAX
条消息)。任何一条消息都采用整数值,因此您不能让控件对小数值进行操作。
如果您需要控件支持的整数值来表示分数值,则必须在客户端代码中执行映射(缩放和平移)。可能的映射是:
- 设置范围从
0 * 4
到(100 - 14) * 4
(即0
到344
)。控件位置x
表示值14 + x / 4
.
- 设置范围从
14 * 4
到100 * 4
(即56
到400
)。控制位置 x
然后表示值 x / 4
.
一般情况下,使用浮点值无法准确表示小数值。然而,在这种情况下,准确性没有损失;任何整数值除以 2 的幂(例如 4)都可以用浮点值准确表示(只要结果仍在范围内)。
我正在 MFC 中 visual studio 中制作一个滑块控件,我想将范围设置为 14 到 100,步长应为 0.25,如 14.25、14.50、14.75。
如何制作自定义滑块控件?
条 CSliderCtrl
wraps a trackbar control. As such, the former shares the same limitations with the latter. Specifically, the range is set through the TBM_SETRANGE
message (or the TBM_SETRANGEMIN
and TBM_SETRANGEMAX
条消息)。任何一条消息都采用整数值,因此您不能让控件对小数值进行操作。
如果您需要控件支持的整数值来表示分数值,则必须在客户端代码中执行映射(缩放和平移)。可能的映射是:
- 设置范围从
0 * 4
到(100 - 14) * 4
(即0
到344
)。控件位置x
表示值14 + x / 4
. - 设置范围从
14 * 4
到100 * 4
(即56
到400
)。控制位置x
然后表示值x / 4
.
一般情况下,使用浮点值无法准确表示小数值。然而,在这种情况下,准确性没有损失;任何整数值除以 2 的幂(例如 4)都可以用浮点值准确表示(只要结果仍在范围内)。