Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Глобальный инструмент "Hand" 
:(
    Опции темы
Crw
Дата 11.5.2009, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 25.2.2008

Репутация: нет
Всего: 4



Вобщем появилась интересная идея сделать инструмент "Hand" (как в просмотрщиках Пдфок, изображений и т.п.), только для всех Виндовых контролов которые имеют скрулбары. Идея довольно проста - перехватываем нажатие кнопки мышки, когда происходит WM_MOUSEMOVE, посылаем нужному окну сообщение WM_VSCROLL (или WM_HSCROLL).
В целом получилось не плохо (проект еще не закончен), правда перетаскивать контент получается не во всех программах (например в МС Офисе подобная технология не работает, как и в Файерфоксе). В Дельфях и Визуал студио все работает как и предполагалось, что оказалось весьма удобной функцией для прокрутки кода.
Добавил также небольшую инертность, как в АйФонах и тому подобных современных девайсах.
Исходники (вместе с откомпилированой программой) можно скачать отсюда (Делфи 7).
В программе при нажатии на кнопку Старт, вешается хук на события от мышки. Перетаскивание делается правой кнопкой мышки.
PM MAIL   Вверх
Mechanic
Дата 11.5.2009, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 228
Регистрация: 5.5.2006
Где: Kharkov, Ukraine

Репутация: 1
Всего: 7



It Works!  smile

Правда, в Paint'e заметил, что масштаб перемещения не совсем естественный. То есть, наблюдается эффект поручня эскалатора в метро, который всегда из рук старается уползти.

И можно вместо Exlude List'а предусмотреть вариант работы наоборот с Include List'ом (опционально)?
--------------------
Tell me the extensions of the files You backup and I'll tell You who You are..  ©Mch  
PM   Вверх
kami
Дата 11.5.2009, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 15
Всего: 72



Цитата(Crw @  11.5.2009,  16:04 Найти цитируемый пост)
сделать инструмент "Hand"

Хорошо.
Видно, что для создания инструмента Hand был задействован инструмент Head smile

Добавлено через 2 минуты и 11 секунд
Цитата(Crw @  11.5.2009,  16:04 Найти цитируемый пост)
вешается хук на события от мышки.

В Висте для работы со всеми приложениями неплохо было бы, чтобы программа запускалась с правами админа (манифест добавить), бо иначе хук устанавливается не во все процессы.
PM MAIL WWW   Вверх
Crw
Дата 11.5.2009, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 25.2.2008

Репутация: нет
Всего: 4



Цитата(Mechanic @  11.5.2009,  16:23 Найти цитируемый пост)
Правда, в Paint'e заметил, что масштаб перемещения не совсем естественный.

Просто это зверь (Paint) так реагирует на WM_?SCROLL ... В текстовых редакторах это сообщение означает перемещение на одну строчку (или символ), а в Пейнте это значение равняется целым 8 пикселям. И ИЕшке тоже шаг прокрутки больше чем хотелось бы. Как с этим бороться пока не понятно. Думал посылать сообщение WM_MOUSEWHEEL (большинство приложений на него реагируют лучше), но результаты прокрутки тоже не очень - шаг прокрутки задается системой и если он стоит больше 1 строчки, то прокрутка не совсем плавная получается.
Цитата(Mechanic @  11.5.2009,  16:23 Найти цитируемый пост)
И можно вместо Exlude List'а предусмотреть вариант работы наоборот с Include List'ом (опционально)? 

Можно. Но зачем?

Цитата(kami @  11.5.2009,  16:33 Найти цитируемый пост)
В Висте для работы со всеми приложениями неплохо было бы, чтобы программа запускалась с правами админа

Пробовал в Семерке (правда под Админовским профилем), все работало как предполагалось. Но наверное все-таки не помешает права админа требовать при старте.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0665 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.