我有一个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,但它们不适用于拖拽滑块时。
发布于 2017-07-26 06:47:27
只需使用你想要的滑块度量。所以,只需在数值范围内使用1/10。
m_sliderServerTimeout.SetRange(1, 60);最后,当您想要使用数据时,只需将设置值缩放为*10。
发布于 2017-07-25 22:18:23
似乎没有一个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;
}
}https://stackoverflow.com/questions/45313448
复制相似问题