Горизонтальная прокрутка

Russian main discussion
  • Author
  • Message
Offline
Posts: 1862
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

В окне AkelPad'а не работает горизонтальная прокрутка, реализованная в некоторых мышках.

Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

Infocatcher
Кто его знает, как драйвер мыши пытается обращаться к окну редактирования. Даже быть может, что драйвер поддерживает только какие-то определенные окна (классы). Попробуйте указать "RichEditClass=1".

Offline
Posts: 1862
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

Instructor wrote:Попробуйте указать "RichEditClass=1".
Не помогло.
Более того, даже AkelPad 3.7.4 странно прокручивается – если с активна утилита для настройки мыши, то горизонтальная полоса прокрутки меняет внешний вид при прокрутке (похоже на отключение темы оформления), а если без утилиты, то вообще никак не реагирует.

Я правильно понял, что некоего стандартного сообщения окну – мол, прокрутись влево/вправо – нету?

Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

Infocatcher
Если даже внешний вид меняется, то тут на сообщениях к окну дело не заканчивается :)

Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

Я правильно понял, что некоего стандартного сообщения окну – мол, прокрутись влево/вправо – нету?
Есть. Называется WM_HSCROLL, только мышь оно никак не касается.

Instructor
Если даже внешний вид меняется, то тут на сообщениях к окну дело не заканчивается
Но без утилитки мышиниый Ввод/Вывод должен работать в любом случае. Например можно попытаться реагировать на WM_INPUT, но тут уже неизбежна привязка к специфике устройства что не есть хорошо.
(MSDN пишет что VISTA есть что-то типа поддержки горизонтального колеса).
Вот где-бы достать двуколесную мышь, чтобы попробовать практически? :)

Offline
Posts: 1862
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

FeyFre wrote:Но без утилитки мышиниый Ввод/Вывод должен работать в любом случае.
Угу, при первом подключении ставится какой-то драйвер от MS. Причем уже с ним в свойствах мыши появляется настройка горизонтальной прокрутки.
FeyFre wrote:(MSDN пишет что VISTA есть что-то типа поддержки горизонтального колеса).
Вот где-бы достать двуколесную мышь, чтобы попробовать практически? :)
В моем случае это Win 7 и отклоняющееся влево/вправо колесо. :)

Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

Угу, при первом подключении ставится какой-то драйвер от MS. Причем уже с ним в свойствах мыши появляется настройка горизонтальной прокрутки.
А как называется? Мышь HID или не-HID(впрочем это не важно)?
В моем случае это Win 7 и отклоняющееся влево/вправо колесо.
Ну во первых, у меня язык не поворачивается назвать это прокруткой. Скорее всего это две супер-хитрые кнопки, которые искусственно пытаются назвать горизонтальным скроллом.
Во вторых, у меня дежавю... и вот почему:
Более того, даже AkelPad 3.7.4 странно прокручивается – если с активна утилита для настройки мыши, то горизонтальная полоса прокрутки меняет внешний вид при прокрутке (похоже на отключение темы оформления), а если без утилиты, то вообще никак не реагирует.
Утилита часом называется на ipoint.exe ? (Хотя это не важно)
Дежавю потому что погуглив на предмет горизонтальной прокрутки попал я сюда и там точно такая же ситуация.
И на сколько я понял - лечения нам не видать. Стандартный мелкомягкий драйвер не понимает такого понятия как горизонтальная прокрутка. Возможно тот драйвер что доустанавливается уже и понимает, но выдает эти движения(по сути данные из устройства Мышь) в сыром виде. Сырой ввод хоть и проходит через окна, но в 99.(9)% случае не обрабатывается ими, а передается дальше в стандартные обработчики которые уже генерируют стандартные оконные сообщения пригодные для обработки. Только вот стандартные обработчики этого почему-то не делают, игнорируют(это называется правая рука не знает что делает левая). И потому и нужна утилита которая всё-таки обрабатывает сырой ввод от Мыши, генерируя нужные сообщения. Эта утилита небось вживляет свою DLL во все процессы, да? И заодно пытается умничать и навязывает свои скроллы тем кому они не нужны.
Выхода два:
1. Либо работаем только с утилитой.
2. Либо Инструктор делает то же, что и утилита
( WM_INPUT при GetRawInputData(lParam,...) которое возвращает тип события RIM_TYPEMOUSE и само событие - горизонтальная прокрутка преобразовать в WM_MOUSEHWHEEL)
Первое - неудобство для пользователей, второе - головная боль Инструктору, которая не факт что полезна(я лично не уверен что это правильный путь)

Offline
Posts: 1862
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

FeyFre
А как называется? Мышь HID или не-HID(впрочем это не важно)?
Диспетчер устройств показывает как «Logitech HID-compliant M500 Laser Mouse».
Утилита часом называется на ipoint.exe ? (Хотя это не важно)
Вообще ничего не важно, и все это только буквы на чьем-то экране. :D
Утилита самообзывается как «Logitech SetPoint Event Manager», SetPoint.exe.
Эта утилита небось вживляет свою DLL во все процессы, да?
Вроде бы, нет. Скрин.
Например, поиск по «pshook» (Punto Switcher) выдает почти все процессы.

Offline
Posts: 366
Joined: Mon Jan 10, 2011 5:28 pm
Contact:

Post by Lenchik »

А в плагине Explorer работает. И в окошке фолдинга у Coder. В чем разница скроллов там и в основном окне?

Заодно хотелось бы горизонтальной прокрутки списка вкладок, когда их много, по наведению мыши на зону отображения вкладок. Чтобы не тыкать те стрелочки, которые появляются.

Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

Lenchik
В Explorer и Coder используется контрол SysTreeView32 производства Microsoft. В окне редактора - AkelEdit производства Инструктора. Наверное Microsoft знает больше об устройтсве Windows чем Инструктор.

Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

Сделано по аналогии с WM_MOUSEWHEEL. Требуются владельцы мышек для проверки:
http://akelpad.sourceforge.net/files/AkelPad.zip

Offline
Posts: 1862
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

Instructor
Работает, но инвертировано. :)
И если зажать, то не прокручивает – только после каждого отдельного нажатия.
Еще в стандартном блокноте прокручивает на большее расстояние, а вот в Notepad++ – точно так же. Особая обработка, что ли.

Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

Infocatcher wrote:Работает, но инвертировано. :)
А так?
Infocatcher wrote:И если зажать, то не прокручивает – только после каждого отдельного нажатия.
Видимо WM_MOUSEHWHEEL посылается не как WM_KEYDOWN. А MS Notepad обрабатывает зажатие?
Infocatcher wrote:Еще в стандартном блокноте прокручивает на большее расстояние, а вот в Notepad++ – точно так же. Особая обработка, что ли.
Берется указанное в настройках системы количество прокручиваемых символов (SPI_GETWHEELSCROLLCHARS).

Offline
Posts: 1862
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

Instructor
С направлением теперь все правильно.
А MS Notepad обрабатывает зажатие?
Да.
Что интересно, если выгрузить специальную утилиту для настройки, то прокручиваться начинает везде одинаково. И начинает реагировать на зажатие.
А без утилиты неудобно – у меня там закрытие окна и Alt+Tab на дополнительных клавишах. :D

Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

Infocatcher wrote:С направлением теперь все правильно.
Эксперимент можно считать удавшимся :)
Infocatcher wrote:Да. Что интересно, если выгрузить специальную утилиту для настройки, то прокручиваться начинает везде одинаково. И начинает реагировать на зажатие.
Похоже MS Notepad работает на более низком уровне.
Post Reply