Page 1 of 2
Posted: Sat Jun 26, 2010 9:17 pm
by Infocatcher
В окне AkelPad'а не работает горизонтальная прокрутка, реализованная в некоторых мышках.
Posted: Sun Jun 27, 2010 10:18 am
by Instructor
Infocatcher
Кто его знает, как драйвер мыши пытается обращаться к окну редактирования. Даже быть может, что драйвер поддерживает только какие-то определенные окна (классы). Попробуйте указать "RichEditClass=1".
Posted: Sun Jun 27, 2010 10:42 am
by Infocatcher
Instructor wrote:Попробуйте указать "RichEditClass=1".
Не помогло.
Более того, даже AkelPad 3.7.4 странно прокручивается – если с активна утилита для настройки мыши, то горизонтальная полоса прокрутки меняет внешний вид при прокрутке (похоже на отключение темы оформления), а если без утилиты, то вообще никак не реагирует.
Я правильно понял, что некоего стандартного сообщения окну – мол, прокрутись влево/вправо – нету?
Posted: Sun Jun 27, 2010 11:07 am
by Instructor
Infocatcher
Если даже внешний вид меняется, то тут на сообщениях к окну дело не заканчивается

Posted: Sun Jun 27, 2010 2:27 pm
by FeyFre
Я правильно понял, что некоего стандартного сообщения окну – мол, прокрутись влево/вправо – нету?
Есть. Называется WM_HSCROLL, только мышь оно никак не касается.
Instructor
Если даже внешний вид меняется, то тут на сообщениях к окну дело не заканчивается
Но без утилитки мышиниый Ввод/Вывод должен работать в любом случае. Например можно попытаться реагировать на WM_INPUT, но тут уже неизбежна привязка к специфике устройства что не есть хорошо.
(MSDN пишет что VISTA есть что-то типа поддержки горизонтального колеса).
Вот где-бы достать двуколесную мышь, чтобы попробовать практически?

Posted: Sun Jun 27, 2010 4:54 pm
by Infocatcher
FeyFre wrote:Но без утилитки мышиниый Ввод/Вывод должен работать в любом случае.
Угу, при первом подключении ставится какой-то драйвер от MS. Причем уже с ним в свойствах мыши появляется настройка горизонтальной прокрутки.
FeyFre wrote:(MSDN пишет что VISTA есть что-то типа поддержки горизонтального колеса).
Вот где-бы достать двуколесную мышь, чтобы попробовать практически?

В моем случае это Win 7 и отклоняющееся влево/вправо колесо.

Posted: Sun Jun 27, 2010 8:03 pm
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)
Первое - неудобство для пользователей, второе - головная боль Инструктору, которая не факт что полезна(я лично не уверен что это правильный путь)
Posted: Sun Jun 27, 2010 10:07 pm
by Infocatcher
FeyFre
А как называется? Мышь HID или не-HID(впрочем это не важно)?
Диспетчер устройств показывает как «Logitech HID-compliant M500 Laser Mouse».
Утилита часом называется на ipoint.exe ? (Хотя это не важно)
Вообще ничего не важно, и все это только буквы на чьем-то экране.

Утилита самообзывается как «Logitech SetPoint Event Manager», SetPoint.exe.
Эта утилита небось вживляет свою DLL во все процессы, да?
Вроде бы, нет.
Скрин.
Например, поиск по «pshook» (Punto Switcher) выдает почти все процессы.
Posted: Sat Feb 19, 2011 12:09 pm
by Lenchik
А в плагине Explorer работает. И в окошке фолдинга у Coder. В чем разница скроллов там и в основном окне?
Заодно хотелось бы горизонтальной прокрутки списка вкладок, когда их много, по наведению мыши на зону отображения вкладок. Чтобы не тыкать те стрелочки, которые появляются.
Posted: Sat Feb 19, 2011 5:07 pm
by FeyFre
Lenchik
В Explorer и Coder используется контрол SysTreeView32 производства Microsoft. В окне редактора - AkelEdit производства Инструктора. Наверное Microsoft знает больше об устройтсве Windows чем Инструктор.
Posted: Thu Jul 14, 2011 7:34 pm
by Instructor
Сделано по аналогии с WM_MOUSEWHEEL. Требуются владельцы мышек для проверки:
http://akelpad.sourceforge.net/files/AkelPad.zip
Posted: Thu Jul 14, 2011 7:55 pm
by Infocatcher
Instructor
Работает, но инвертировано.

И если зажать, то не прокручивает – только после каждого отдельного нажатия.
Еще в стандартном блокноте прокручивает на большее расстояние, а вот в Notepad++ – точно так же. Особая обработка, что ли.
Posted: Thu Jul 14, 2011 8:05 pm
by Instructor
Infocatcher wrote:Работает, но инвертировано.

А
так?
Infocatcher wrote:И если зажать, то не прокручивает – только после каждого отдельного нажатия.
Видимо WM_MOUSEHWHEEL посылается не как WM_KEYDOWN. А MS Notepad обрабатывает зажатие?
Infocatcher wrote:Еще в стандартном блокноте прокручивает на большее расстояние, а вот в Notepad++ – точно так же. Особая обработка, что ли.
Берется указанное в настройках системы количество прокручиваемых символов (SPI_GETWHEELSCROLLCHARS).
Posted: Thu Jul 14, 2011 8:17 pm
by Infocatcher
Instructor
С направлением теперь все правильно.
А MS Notepad обрабатывает зажатие?
Да.
Что интересно, если выгрузить специальную утилиту для настройки, то прокручиваться начинает везде одинаково. И начинает реагировать на зажатие.
А без утилиты неудобно – у меня там закрытие окна и Alt+Tab на дополнительных клавишах.

Posted: Thu Jul 14, 2011 8:24 pm
by Instructor
Infocatcher wrote:С направлением теперь все правильно.
Эксперимент можно считать удавшимся
Infocatcher wrote:Да. Что интересно, если выгрузить специальную утилиту для настройки, то прокручиваться начинает везде одинаково. И начинает реагировать на зажатие.
Похоже MS Notepad работает на более низком уровне.