Я создал привязанные 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);
}
Не понимаю, почему это должно измениться, но это сработало, спасибо. –