Прокрутка контролов программно

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Comanche
Новичок
Новичок
 
Сообщения: 48
Зарегистрирован: 06.03.2002 (Ср) 0:53

Прокрутка контролов программно

Сообщение Comanche » 30.03.2004 (Вт) 17:25

Есть TreeView с вертикальным скролл-баром. При нажатии на кнопки этого скролл-бара дерево прокручивается на одну "линию" - т.е. на высоту одного своего элемента (узла). То же можно сказать и о других контролах - о ListBox'е и т.д.

Если я программно прокручиваю дерево, посылая сообщение WM_VSCROLL, то у меня в распоряжении самый маленький шаг - это SB_LINEUP (SB_LINEDOWN), т.е. опять-таки "прокрутка в одну линию".

Мне бы хотелось изменить ситуацию и программно прокрутить дерево (или иной контрол, имеющий скролл-бар) с минимально возможным шагом - в 1 пиксель. Однако, я упёрся в то, что не знаю, какое сообщение нужно послать дереву. Да и не совсем я уверен, что задача решится именно с помощью посылки сообщения. Возможно, нужно как-то "поиграться" с API-функциями SetScrollInfo и т.п., - но увы, чё-то у меня этот путь оказался тупиковым (не смог разобраться самостоятельно).

Допустим также, что я делаю сабклассинг дерева и перехватываю все сообщения WM_VSCROLL. Ну а дальше что с ними делать?! Тоже не смог разобраться!

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 30.03.2004 (Вт) 17:45

Сожалею, ничего ты с этим не сделаешь. По крайней мере, до тех пор, пока вместе с WM_VSCROLL не будешь интерсептить еще и WM_PAINT :D Контрол сам определяет, как ему себя рисовать; кроме того, далеко не все они работают через SetScrollInfo(). RichTextBox точно работает, а большинство коммонов - нет.

MEMBER
Гугль
Гугль
 
Сообщения: 758
Зарегистрирован: 29.11.2002 (Пт) 12:02
Откуда: 10 этаж

Сообщение MEMBER » 30.03.2004 (Вт) 17:45

А что хочешь, то и делай, хочешь подмени, хочешь заблокируй, хочешь пропусти.
Господа! Пользуйтесь www.ya.ru
ЗЫ и www.planetsourcecode.com

Comanche
Новичок
Новичок
 
Сообщения: 48
Зарегистрирован: 06.03.2002 (Ср) 0:53

Сообщение Comanche » 30.03.2004 (Вт) 19:05

2MEMBER:
«А что хочешь, то и делай, хочешь подмени, хочешь заблокируй, хочешь пропусти» - это не ответ, а пустая болтовня. Сам-то понял, что сказал?!

MEMBER
Гугль
Гугль
 
Сообщения: 758
Зарегистрирован: 29.11.2002 (Пт) 12:02
Откуда: 10 этаж

Сообщение MEMBER » 31.03.2004 (Ср) 18:17

Давай только без этого, "понял что сказал" и т.д. Договорились?
На твой вопрос о сабклассинге и перехваченном сообщении я дал ответ.
Может ты постараешся более точно формулировать свои мысли?
Господа! Пользуйтесь www.ya.ru
ЗЫ и www.planetsourcecode.com

codemaster
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 604
Зарегистрирован: 13.02.2004 (Пт) 13:35

Сообщение codemaster » 31.03.2004 (Ср) 22:48

Может не в тему
Помести TV в контейнер (PictureBox) и прокручивай его сколько хочешь


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, PetalBot, Yandex-бот и гости: 18

    TopList  
cron