CListCtrl и горизонтальный скролл
От: Куликов А.В. Украина  
Дата: 11.04.07 21:22
Оценка:
Есть CListCtrl в режиме Report, в котором 1 элемент. Когда пользователь расширяет одну из колонок, появляется горизонтальный скролл и закрывает полностью собой элемент списка. Посоветуйте, пожалуйста, как перехватить момент появления скролла. Тогда можно было бы увеличивать высоту списка на высоту скроллбара.

Заранее благодарен за ответ.
Re: CListCtrl и горизонтальный скролл
От: SchweinDeBurg Россия https://zarezky.spb.ru/
Дата: 12.04.07 05:36
Оценка:
Здравствуйте, Куликов А.В., Вы писали:

КАВ>Посоветуйте, пожалуйста, как перехватить момент появления скролла. Тогда можно было бы увеличивать высоту списка на высоту скроллбара.


Ну, чисто теоретически можно было бы родить потомка CListCtrl, который будет обрабатывать HDN_BEGINTRACK/HDN_ENDTRACK, приходящие от хидера (являющегося его ребенком) и проверять, не стала ли суммарная ширина колонок больше, чем ширина клиенсткой области списка. Другой вопрос, что пользователю может быть не слишком приятно "дерганье" списка и "самопроизвольное" изменение его размеров.
[ posted via RSDN@Home 1.1.4 stable SR1 r568, accompanied by silence ]
- Искренне ваш, Поросенок Пафнутий
Re[2]: CListCtrl и горизонтальный скролл
От: Куликов А.В. Украина  
Дата: 13.04.07 05:33
Оценка:
Здравствуйте, SchweinDeBurg, Вы писали:


SDB>Ну, чисто теоретически можно было бы родить потомка CListCtrl, который будет обрабатывать HDN_BEGINTRACK/HDN_ENDTRACK, приходящие от хидера (являющегося его ребенком) и проверять, не стала ли суммарная ширина колонок больше, чем ширина клиенсткой области списка. Другой вопрос, что пользователю может быть не слишком приятно "дерганье" списка и "самопроизвольное" изменение его размеров.



Спасибо за ответ. Потомок CListCtrl у меня и раньше был. Сделал с помощью обработки HDN_ITEMCHANGEDA и HDN_ITEMCHANGEDW в OnNotify(), а наличие скроллбара определяю используя GetScrollBarInfo().
Изменение размера списка проходит незаметно. Во-первых, потому что он находится не в диалоге, а занимает всю площадь popup окна. Во-вторых, окно увеличивается вниз и это не заметно на фоне появления или исчезновения скроллбара, что уже само по себе — "дерганье".
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.