Реализация прокрутки с помощью средней кнопки мыши
От: Аноним  
Дата: 28.04.04 10:43
Оценка:
Добрый день!

Замечено, что стандартные виндовые контролы (например, EDIT, LISTVIEW и TREEVIEW) обладают возможностью прокручивать содержимое окна с помощью средней кнопки мыши. Именно кнопки, а не колеса !!!

Нажимаешь/отпускаешь среднюю кнопку — появляется курсор в виде 4-х или 2-х стрелок, в зависимости от наличие у окна горизонтального и вертикального скроллбаров. При смещении мыши от первоначальной позиции, происходит прокрутка окна посредством сообщений WM_VSHCROLL и WM_HSCROLL.

В поисках того, как эта фича сделана, набрел на исходники comctl32.dll. Нашел в ней исходник, который это делает — reader.c.

Но вот странное дело. Ни одна из ф-ций этого файла в остальных исходниках commctl не используется. И нигде нет описания структуры READERMODEINFO, которую получают все ф-ции из этого файла.

Конечно, это не умаляет ценность сей находки. Но наличие хедера со структурой READERMODEINFO, возможно покажет штатный способ использования этой файла.

Вопрос: Где найти описание структуры READERMODEINFO?
Re: Стандартные средства для прокрутки
От: cyg Россия  
Дата: 29.04.04 12:37
Оценка:
Что же, видимо, вариантов нет.

Спрошу по-другому. Если ли стандартные средства (WIN API, MFC, WTL) для реализации прокрутки с помощью средней кнопки мыши?
Re: Реализация прокрутки с помощью средней кнопки мыши
От: ioni Россия  
Дата: 29.04.04 12:50
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Добрый день!



вообще то мне казалось что это определяется драйвером мыши или может быть настройками где нибудь в реестре
у меня мышь от ms на usb так вот в последних дровах такая функциональность не присутствует
теперь при нажатии на среднюю кнопку окно теряет фокус и скрывается...
так что я бы не стал сильно заморачиваться...
Re[2]: Реализация прокрутки с помощью средней кнопки мыши
От: cyg Россия  
Дата: 29.04.04 13:20
Оценка:
Ты прав, в драйвере мыши есть настройка — реакция при нажатии на среднюю кнопку. Но почему-то разные программы могут выводить разный курсор. Значит они что-то для этого делают...
Re[3]: Реализация прокрутки с помощью средней кнопки мыши
От: Ash-2 Россия  
Дата: 29.04.04 14:18
Оценка:
Здравствуйте, cyg, Вы писали:

cyg>Ты прав, в драйвере мыши есть настройка — реакция при нажатии на среднюю кнопку. Но почему-то разные программы могут выводить разный курсор. Значит они что-то для этого делают...


Предположение:
драйвер мыши имитирует какое-то "событие" => программы обрабатывают это "событие", соответственно разные программы обрабатывают по разному (ведь кто знает, чем руководствовался программист, может у него на это событие стоит форматирование С:\...), отсюда и различия...
Re[4]: Реализация прокрутки с помощью средней кнопки мыши
От: cyg Россия  
Дата: 30.04.04 08:30
Оценка:
Здравствуйте, Ash-2, Вы писали:

A2>Предположение:

A2>драйвер мыши имитирует какое-то "событие" => программы обрабатывают это "событие", соответственно разные программы обрабатывают по разному (ведь кто знает, чем руководствовался программист, может у него на это событие стоит форматирование С:\...), отсюда и различия...

Вопрос в том, что это за событие?
Похоже — WM_MBUTTONDOWN.
Re[2]: Стандартные средства для прокрутки
От: Аноним  
Дата: 30.04.04 08:51
Оценка:
MFC 7.0, исходники CScrollView. Класс _AFX_MOUSEANCHORWND
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.