2013-07-23 2 views
0

Я создал привязанные Slider Control и связанные с ними Edit Control, так что перемещение ползунка меняет текст поля редактирования, а ручное редактирование текста перемещает ползунок. По большей части он работает, но после того, как я отпустил кнопку мыши при перетаскивании Slider, Edit Control показывает 0. Пока я перетаскиваю его, отображается правильное значение.Редактирование управления, показывающее показание положения ползунка

Я могу частично устранить проблему, добавив пункт if(nPos != 0), который останавливает это. Однако, когда я нажимаю, чтобы переместить Slider, а не перетащить, Edit Control не обновляется.

Нужно ли использовать другой обработчик, если щелкнуть Slider, а не перетащить? Или я делаю что-то неправильно?

// Updates slider when value is changed in the Edit Box 
void CProject1Dlg::OnChangeEdit1() { 
    SLIDER_1.SetPos(GetDlgItemInt(IDC_EDIT1)/1000); 
} 


// Slider horizontal scroll handler 
void CProject1Dlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
{ 
    if (nPos != 0) { 
     SetDlgItemInt(IDC_EDIT1, nPos * 1000); 
    } 

    CDialogEx::OnHScroll(nSBCode, nPos, pScrollBar); 
} 

ответ

2

Что произойдет, если попытаться извлечь положение ползунка непосредственно GetPos, а не с помощью параметра nPos?

+0

Не понимаю, почему это должно измениться, но это сработало, спасибо. –

Смежные вопросы