Я использую полосу прокрутки, чтобы показать большой фрагмент данных со многими строками (для некоторого фона, пожалуйста, обратитесь к моему предыдущему вопросу: MF C: как уменьшить временные затраты на OnInitialUpdate () для прокрутки? ).
Функция прокрутки работает нормально, когда: (1) нажатие на кнопку со стрелкой, (2) нажатие на вал прокрутки или (3) вращение колесика мыши; содержимое перемещается вверх или вниз правильно. Но когда я перетаскиваю большой палец прокрутки, он на самом деле ведет себя не так, как ожидалось, за исключением очень маленького расстояния.
При перетаскивании немного больше, например, вперед, он может отскочить назад, а иногда и полностью к началу. Он никогда не остается, когда мышь отпущена, и я никогда не могу успешно перетащить большой палец до последней записи.
При более тщательном рассмотрении «GetClipBox (...)», кажется, не возвращает правильные данные. Например, если я перетащу весь путь до конца, эта функция вернет rect.top равным нулю. Поскольку я полагаюсь на возвращаемое значение для расчета набора записей для рисования, все остальное запутано.
Здесь можно найти минимальный воспроизводимый пример: https://138.197.210.223/test/My.tar.gz. При тестировании перетащите большой палец до конца для лучшего эффекта.