Перерисовка ScrollBar`а

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Перерисовка ScrollBar`а

Сообщение MIT » 19.04.2010 (Пн) 16:43

Вопрос не напрямую относится к VB6, а лишь косвенно, но задам я его именно в этом разделе, т.к. он более популярен, нежели дотнетный.

Собственно, что имеем: имеем скроллбар (не контрол, а установленный через стили окна), отрисовку которого надо отловить. Если с WM_NCPAINT всё ясно, то вот некоторые вещи для меня не очевидны: скроллбар может перерисоваться и кем-то еще, при этом не оповестив меня. Например функция SetScrollInfo никак не сообщает моему окну о том, что оно перерисовано.

Как можно поймать данное событие?
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Перерисовка ScrollBar`а

Сообщение Хакер » 19.04.2010 (Пн) 18:50

А зачем?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Перерисовка ScrollBar`а

Сообщение MIT » 19.04.2010 (Пн) 19:01

Хочу (конечно же чисто в академических интересах, не покушаясь на всея Виндовс и законы построения пользовательских интерфейсов) что-нибудь нарисовать на скроллбаре. Причем что бы это что-нибудь было нарисовано на совесть, а не кое-как.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Перерисовка ScrollBar`а

Сообщение Хакер » 19.04.2010 (Пн) 19:20

А как можно рисовать на совесть, а не кое как, если никто кроме рисовщика скролбарров не знают, как выглядят скроллбары?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Перерисовка ScrollBar`а

Сообщение MIT » 19.04.2010 (Пн) 19:32

Эм-м...
Что-то я не уловил сути вопроса.

Мне надо знать когда происходят события перерисовки моего скроллбара. Зная эти моменты я буду иметь возможность сразу же нарисовать что-то своё поверх только что нарисованного или даже отменить действие, если представится такая возможность.
Под "на совесть" понимается нормальная перерисовка:
Изображение
1.gif
(339 байт) Скачиваний: 340
а под "кое-как" — результат несогласованности между тем когда рисуется скроллбар и когда рисую я:
Изображение Изображение
2.gif
(395 байт) Скачиваний: 322
3.gif
(398 байт) Скачиваний: 335
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Перерисовка ScrollBar`а

Сообщение Хакер » 19.04.2010 (Пн) 19:51

Это безтемный скроллбар. Как ты собрался рисовать что-то поверх темного (не путать с тёмным) скроллбара?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Перерисовка ScrollBar`а

Сообщение MIT » 19.04.2010 (Пн) 20:18

Windows Aero, вроде всё норм...
Untitled-1.png
Untitled-1.png (15.78 Кб) Просмотров: 1654
Последний раз редактировалось MIT 19.04.2010 (Пн) 20:20, всего редактировалось 1 раз.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: Перерисовка ScrollBar`а

Сообщение Antonariy » 19.04.2010 (Пн) 20:20

MIT, если хочешь рисовать на скроллбаре, нужно его отрисовку взять на себя целиком.
Лучший способ понять что-то самому — объяснить это другому.

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Перерисовка ScrollBar`а

Сообщение MIT » 19.04.2010 (Пн) 20:22

Antonariy
Ну вот я и хочу отловить события перерисовки все. Те сообщения, которые приходят окну, я обрабатываю, осталось только понять как определить перерисовку, вызванную методами, которые не сообщают мне о том, что они меня перерисовали.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: Перерисовка ScrollBar`а

Сообщение Antonariy » 19.04.2010 (Пн) 20:25

WM_PAINT по идее должно хватать.
Лучший способ понять что-то самому — объяснить это другому.

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Перерисовка ScrollBar`а

Сообщение MIT » 19.04.2010 (Пн) 20:34

Нет, скроллбар — это WM_NCPAINT (внизу видно (синий) верхнюю часть региона, который является NonClient-областью). Плюс некоторые из сообщений категории WM_NC*, связанные с событиями мыши также вызывают перерисовку. Но вот беда: при вызове функции SetScrollInfo (и, было бы логично, если и каких-то ещё) окну не присылается ни одного сообщения. Перерисовали (кто-то откуда-то) и всё.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: Перерисовка ScrollBar`а

Сообщение Денис » 19.04.2010 (Пн) 22:43

MIT писал(а):что-нибудь нарисовать на скроллбаре

О да! Сразу вспоминается скроллбар ICE Book Reader'a - там можно устанавливать закладки на нем (выглядят как красные черточки). Но тот бар не системный и довольно простенький. А вообще, можно было бы делать во первых метки на склоллбаре, при этом как-то делать прилипание ползунка к этим меткам (типа центров полосок в эквалайзерах программных аудиоплееров).
Вот это было бы годно.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Перерисовка ScrollBar`а

Сообщение MIT » 19.04.2010 (Пн) 23:16

Кстати, подобной ерундой страдают не многие, но всё-таки кое-кто встречается.

Хук АПИ на дотнете... Звучит забавно :)
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Перерисовка ScrollBar`а

Сообщение Хакер » 19.04.2010 (Пн) 23:24

MIT, всё-таки объясни, какой в этом смысл?

Ползунок скроллбара может иметь форму сосиски (тема «Кулинарная») или гусеницы (тема «Биология»). Я не представляю, что можно рисовать поверх сосиски, чтобы оно так же хорошо рисовалось и поверх гусеницы и поверх чего-либо другого с одинаковой степенью качественности.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Перерисовка ScrollBar`а

Сообщение MIT » 21.04.2010 (Ср) 9:33

Смысл?..
Ну вот хочу я. Вообще, сначала была идея сделать fade эффект затемнения контрола по типу web-интерфейсов (например SlimBox), при этом совершенно не важно в форме чего сделан ползунок, потому что я просто буду красить поверх него, мне совершенно всё равно сосиска там или червячок. Здесь важно лишь знать когда и где красить.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш


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

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

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

    TopList