15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту


Как отобразить определённую часть списка CListCtrl

Вопрос:
Я использую CListCtrl для отображения большого объёма данных. Необходимо, чтобы программа отображала различные части списка, но в MSDN ничего не сказано о том, как установить верхний видимый элемент. Я пробовал использовать CListCtrl::EnsureVisible(), но это не совсем то, что мне нужно.

Ответ:
Для этого можно воспользоваться методом Scroll() в CListCtrl:
1. Получаем верхний элемент
2. Находим высоту строки (при помощи GetItemRect() для первого элемента) - надеюсь, что ваш контрол НЕ owner-drawn с различными размерами строк)
3. Вычисляем расстояние скроллирования по оси Y
4. Скроллируем...