我有一个CSliderCtrl
,我按照这样设置:
m_sliderServerTimeout.SetRange(10, 600);
我有一个事件处理程序:
void COtherSettingsEmailInfoPage::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
if (pScrollBar->GetDlgCtrlID() == IDC_SLIDER)
{
UpdateServerTimeoutDescription();
}
CMFCPropertyPage::OnHScroll(nSBCode, nPos, pScrollBar);
}
工作正常,但我希望滑块以10个单位间隔移动。
如何?
我尝试使用SetLineSize
和SetPageSize
,但它们不适用于拖动滑块的时间。
答案 0 :(得分:1)
似乎没有Trackbar Control Message
来处理这个问题。
一种选择是手动覆盖OnHScroll
。观察SB_THUMBTRACK
消息并保存nPos
的值。调用SB_ENDSCROLL
时,使用CSliderCtrl::SetPos
设置为所需的值。例如:
void CMyDialog::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
static int track = -1;
if(nSBCode == SB_THUMBTRACK)
track = nPos;
if(nSBCode == SB_ENDSCROLL && track >= 0)
{
m_sliderServerTimeout.SetPos(10 * int(track / 10));
track = -1;
}
}
答案 1 :(得分:1)
只需使用您想要的滑块指标即可。因此,只需在值的范围内使用1/10。
m_sliderServerTimeout.SetRange(1, 60);
最后,当您想要使用数据时,只需将设定值缩放* 10。