![]() |
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]() ![]() ![]() |
|
Crw |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 122 Регистрация: 25.2.2008 Репутация: нет Всего: 4 |
Вобщем появилась интересная идея сделать инструмент "Hand" (как в просмотрщиках Пдфок, изображений и т.п.), только для всех Виндовых контролов которые имеют скрулбары. Идея довольно проста - перехватываем нажатие кнопки мышки, когда происходит WM_MOUSEMOVE, посылаем нужному окну сообщение WM_VSCROLL (или WM_HSCROLL).
В целом получилось не плохо (проект еще не закончен), правда перетаскивать контент получается не во всех программах (например в МС Офисе подобная технология не работает, как и в Файерфоксе). В Дельфях и Визуал студио все работает как и предполагалось, что оказалось весьма удобной функцией для прокрутки кода. Добавил также небольшую инертность, как в АйФонах и тому подобных современных девайсах. Исходники (вместе с откомпилированой программой) можно скачать отсюда (Делфи 7). В программе при нажатии на кнопку Старт, вешается хук на события от мышки. Перетаскивание делается правой кнопкой мышки. |
|||
|
||||
Mechanic |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 228 Регистрация: 5.5.2006 Где: Kharkov, Ukraine Репутация: 1 Всего: 7 |
It Works!
![]() Правда, в Paint'e заметил, что масштаб перемещения не совсем естественный. То есть, наблюдается эффект поручня эскалатора в метро, который всегда из рук старается уползти. И можно вместо Exlude List'а предусмотреть вариант работы наоборот с Include List'ом (опционально)? --------------------
Tell me the extensions of the files You backup and I'll tell You who You are.. ©Mch |
|||
|
||||
kami |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 15 Всего: 72 |
Хорошо. Видно, что для создания инструмента Hand был задействован инструмент Head ![]() Добавлено через 2 минуты и 11 секунд В Висте для работы со всеми приложениями неплохо было бы, чтобы программа запускалась с правами админа (манифест добавить), бо иначе хук устанавливается не во все процессы. |
|||
|
||||
Crw |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 122 Регистрация: 25.2.2008 Репутация: нет Всего: 4 |
Просто это зверь (Paint) так реагирует на WM_?SCROLL ... В текстовых редакторах это сообщение означает перемещение на одну строчку (или символ), а в Пейнте это значение равняется целым 8 пикселям. И ИЕшке тоже шаг прокрутки больше чем хотелось бы. Как с этим бороться пока не понятно. Думал посылать сообщение WM_MOUSEWHEEL (большинство приложений на него реагируют лучше), но результаты прокрутки тоже не очень - шаг прокрутки задается системой и если он стоит больше 1 строчки, то прокрутка не совсем плавная получается.
Можно. Но зачем?
Пробовал в Семерке (правда под Админовским профилем), все работало как предполагалось. Но наверное все-таки не помешает права админа требовать при старте. |
||||||
|
|||||||
![]() ![]() ![]() |
Правила форума "Delphi: WinAPI и системное программирование" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |