CListBox и DeleteString

uniqueman
Уже с Приветом
Posts: 2013
Joined: 16 Mar 2002 10:01
Location: New York City

CListBox и DeleteString

Post by uniqueman »

Проблема...

В контроле находится 500 строк. Если нужно вставить след. строку, то удаляется нижняя (с индексом 499) и в начало вставляется новая. Если я мышью выделю строку в любом месте контрола, потом скроллом поднимусь наверх допустим, то при удалении строки фокус автоматически переместится на то место, где была выделена строка. Очень неудобно.. я сделал так.

Перед удалением делаю GetTopIndex(), удаляю, потом делаю SetTopindex ().

Вроде нормально, но опять же, если строка была выделена внизу, то при удалении фокус резко перемещается вниз и потом также резко наверх.

Как помочь?
- Чай, кофе не предлагаю...
- Спасибо, мы уже пиво выпили
User avatar
YevgenyN
Уже с Приветом
Posts: 305
Joined: 15 Sep 2001 09:01
Location: Newport Beach, CA

Post by YevgenyN »

SetRedraw(FALSE) ... SetRedraw(TRUE) не помогает?
uniqueman
Уже с Приветом
Posts: 2013
Joined: 16 Mar 2002 10:01
Location: New York City

Post by uniqueman »

еще как помогает :mrgreen:
- Чай, кофе не предлагаю...
- Спасибо, мы уже пиво выпили
uniqueman
Уже с Приветом
Posts: 2013
Joined: 16 Mar 2002 10:01
Location: New York City

Post by uniqueman »

Еще один вопрос.

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

Можно ли стандартными средствами ограничить скорость прокрутки содержимиого контрола?

Или надо ловить WM_MOUSEWHEEL?


Спасибо
- Чай, кофе не предлагаю...
- Спасибо, мы уже пиво выпили
User avatar
YevgenyN
Уже с Приветом
Posts: 305
Joined: 15 Sep 2001 09:01
Location: Newport Beach, CA

Post by YevgenyN »

Можно subclass-ировать список и самостятельно обрабатывать WM_MOUSEWHEEL, скроллируя список с нужной точностью. Но, вообще говоря, изменение стандартного поведения стандартного элемента управления может быть чревато боком (в следующей версии Windows или при использовании какой-нибудь экзотической мыши) 8)
uniqueman
Уже с Приветом
Posts: 2013
Joined: 16 Mar 2002 10:01
Location: New York City

Post by uniqueman »

я просто решил задачу так.

Обрабатываю в контроле ON_MOUSEWHEEL и на каждое сообщение сдвигаю содержимое контрола на одну строку, либо вниз либо вверх черерз GetTopIndex , SetTopIndex.

замечательно работает:)
- Чай, кофе не предлагаю...
- Спасибо, мы уже пиво выпили

Return to “Вопросы и новости IT”