2017-07-25 68 views
1

移動我有一個CSliderCtrl,我把它像這樣:設置CSliderCtrl在10個單位間隔

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個單位間隔移動。

怎麼樣?

更新

我嘗試使用SetLineSizeSetPageSize但它們並不適用時滑塊拖動到。

回答

1

只需使用所需的滑條指標即可。所以只需在數值範圍內使用1/10。

m_sliderServerTimeout.SetRange(1, 60); 

最後,當您要使用數據時,只需按* 10縮放設定值。

+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; 
    } 
} 
+0

感謝您的回答。我已經接受了其他答案,但總的來說,實施起來很簡單。但再次感謝。 –