Я использую элемент управления списком MFC в виде отчета со строками сетки для отображения данных в расплывчатой форме.
Иногда, когда пользователь прокручивает элемент управления по вертикали, рисуются дополнительные линии сетки, что выглядит ужасно.
Этого не происходит, когда ползунок или колесико мыши используются для прокрутки, только при использовании маленькой кнопки со стрелкой вниз в нижней части элемента управления прокрутки.
Похоже, это происходит, когда размер окна управления списком не является точным четным числом строк, так что частичная строка видна внизу.
Если я отрегулирую размер элемента управления списком так, чтобы частичные строки не были видны, проблема будет решена. Тем не менее, он появится, когда программа будет запущена на другом компьютере, предположительно из-за изменения количества пикселей, занятых строкой.
Я предполагаю, что это взаимодействие между разрешением экрана, размером шрифта и "диалоговыми единицами".
Полагаю, мне нужно программно изменить размер элемента управления при его создании. Но какого размера?
Я пытался использовать метод ApproximateViewRect (), но не могу заставить его работать. Возможно, этот метод не знает о просмотре отчета?
Другим методом, я полагаю, было бы создание собственной специализации CListCtrl и переопределение любого метода, выполняющего прокрутку. Похоже, это будет много работы.
Этот снимок экрана показывает тесно связанную проблему, где линии сетки пропадают без вести
а вот еще один с дополнительными линиями сетки
Единственное различие между этими двумя и между ними и тем, которое прекрасно прокручивается, состоит в том, что размер элемента управления по вертикали отличается на несколько пикселей.