Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Delphi: WinAPI и системное программирование > Глобальный инструмент "Hand" |
Автор: Crw 11.5.2009, 16:04 |
Вобщем появилась интересная идея сделать инструмент "Hand" (как в просмотрщиках Пдфок, изображений и т.п.), только для всех Виндовых контролов которые имеют скрулбары. Идея довольно проста - перехватываем нажатие кнопки мышки, когда происходит WM_MOUSEMOVE, посылаем нужному окну сообщение WM_VSCROLL (или WM_HSCROLL). В целом получилось не плохо (проект еще не закончен), правда перетаскивать контент получается не во всех программах (например в МС Офисе подобная технология не работает, как и в Файерфоксе). В Дельфях и Визуал студио все работает как и предполагалось, что оказалось весьма удобной функцией для прокрутки кода. Добавил также небольшую инертность, как в АйФонах и тому подобных современных девайсах. Исходники (вместе с откомпилированой программой) можно скачать http://filesexchange.narod.ru/EnhancedMouse.rar (Делфи 7). В программе при нажатии на кнопку Старт, вешается хук на события от мышки. Перетаскивание делается правой кнопкой мышки. |
Автор: Mechanic 11.5.2009, 16:23 |
It Works! ![]() Правда, в Paint'e заметил, что масштаб перемещения не совсем естественный. То есть, наблюдается эффект поручня эскалатора в метро, который всегда из рук старается уползти. И можно вместо Exlude List'а предусмотреть вариант работы наоборот с Include List'ом (опционально)? |
Автор: kami 11.5.2009, 16:33 |
Хорошо. Видно, что для создания инструмента Hand был задействован инструмент Head ![]() Добавлено через 2 минуты и 11 секунд В Висте для работы со всеми приложениями неплохо было бы, чтобы программа запускалась с правами админа (манифест добавить), бо иначе хук устанавливается не во все процессы. |