![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Nastya |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 27.3.2002 Где: Мариуполь Репутация: 5 Всего: 44 |
Есть ScrollBar`ы, как сделать так, что бы они реагированили на колесико прокрутки, если мышь такое имеет.
-------------------- Что бы понять рекурсию, надо понять рекурсию "Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор |
|||
|
||||
RAN |
|
|||
Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 709 Регистрация: 14.3.2003 Где: Щёлково Моск.обл. Репутация: 5 Всего: 6 |
обработкой сообщения WM_MOUSEWHEEL. Там ты получишь на сколько прокрутили колесо * 120. На 120 умножается потому, что MicroSoft надеятся в будущем разработать более точные мыши. Эти мыши будут работать по какому-то другому принципы. А пока работает примитивный счётчик один такт = 120 единицам.
Ну, вот. В этом сообщении посылай команды ScrollBar'у, чтоб тот прокручивался. |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 25 Всего: 232 |
ЗЫ, ещё умным будет если сделать проверку (при поступлении WM_MOUSEWHEEL в оконную процедуру), находится ли курсор мыши в пределах окна. Более интеллектуальная обработка получается.
-------------------- ![]() |
|||
|
||||
Step |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
вообщето если правильно установленны драйвера, и вы вставляете например рич едит со скролом, то он уже потдерживает колесико, у меня такое было, пишу прогу и вижу что текст прокручуется по колесику, ничего дополнительно я не писал. Windows Сама посылает сообщения скролирования
-------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
RAN |
|
|||
Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 709 Регистрация: 14.3.2003 Где: Щёлково Моск.обл. Репутация: 5 Всего: 6 |
Step, ты писал не в API значит. Писать надо самому. Даже если какие-то драйвера мышей сами посылают окну сообщение WM_HSCROLL, то это скорее исключение, чем правило. И интересно как на таких компах обрабатывать WM_MOUSEWHEEL. Или надо драйверу возвращать, что сообщение WM_MOUSEWHEEL обработано, и он (драйвер) не пошлёт окну сообщение WM_HSCROLL.
|
|||
|
||||
Дрон |
|
|||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 10 Всего: 92 |
Для отдельных ScrollBar'ов само работать не будет, т.е. там нужен WM_MOUSEWHEEL, а вот для ListBox, например, всё автоматически скроллиться и без WM_MOUSEWHEEL.
-------------------- Да. Именно так. |
|||
|
||||
RAN |
|
|||
Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 709 Регистрация: 14.3.2003 Где: Щёлково Моск.обл. Репутация: 5 Всего: 6 |
Блин. Виноват. Не внимательно прочитал. В стандартных классах колёсико работает. Там всё реализовано. Но это делает не драйвер, а само окно через всё то же WM_MOUSEWHEEL. Здесь мы обсуждаем собственные классы окон. Я так понимаю.
|
|||
|
||||
Nastya |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 27.3.2002 Где: Мариуполь Репутация: 5 Всего: 44 |
Да речь шла об полосах прокрутки на окнах, установленных "вручную". Спасибо большое, кажись понятно ![]() -------------------- Что бы понять рекурсию, надо понять рекурсию "Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор |
|||
|
||||
Step |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
-------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
RAN |
|
||||||
Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 709 Регистрация: 14.3.2003 Где: Щёлково Моск.обл. Репутация: 5 Всего: 6 |
Какой же это флейм? Это как раз рациональное зерно
![]() Я делаю так: 1. Беру VC6.0 2. Создаю Win32 проект Hello World 3. Добавляю в процедуру окна WndProc следующие строки:
Больше ничего не меняем. Запускаем. Колёсико работает. Теперь делаем следующее: 1. Перед функцией WinMain дописываем следующее:
(На зло некоторым участникам другой темы форума и г-ну Страуструпу использовал ? : ![]() 2. А только что добавленный WM_CREATE исправляем на такой:
Запускаем. И RichEdit не реагирует на колесо. Отсюда я делаю вывод, что прокрутку колеса обрабатывает класс окна RICHEDIT. P.S. Для тех, кто не понял объясню, что я "запретил" RichEdit обрабатывать сообщение WM_MOUSEWHEEL. |
||||||
|
|||||||
Step |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
Step, также приношу свои извинения, но есть еще непонятки :
Берем мышь с 3 кнопками, без колеса, ставим драва, и что видим, нажимаю среднюю клавишу на ричедит, появляется иконка со стрелками вверх вниз, двигаем мышку - начинает работать скролл, скорость меняется от положения мышки и т.д. мне понятно что драйвер подменяет действия средней мышки..... но вопрос тогда, кто рисует иконку -------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
Ars |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 325 Регистрация: 28.8.2003 Где: Московская обл. Репутация: 2 Всего: 2 |
Он же - подлый драйвер -------------------- Есть многое на свете, друг Горацио, С чем очень долго можно прое..! |
|||
|
||||
GriKo |
|
|||
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 7.6.2003 Где: Израиль Репутация: нет Всего: нет |
В Бормане есть такая фича - TControl::OnMouseWheel...
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |