Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

WINAPI MSVSC++ отслеживание мыши

9.1K
23 марта 2010 года
motorw
134 / / 15.12.2009
Итак, что хотелось бы узнать - необходимо отслеживать перемещения мыши после нажатия левой ее кнопки. Иными словами, или переводя на русский(что, наверное, необязательно) - есть окно. Нажимаем в клиентской его части левую кнопку мыши. После этого водим мышью вправо, допустим. И необходимо узнать, какой путь она прошла(не в метрах, разумеется, а в координатах(пикселях)). Причем определить это нужно тогда, когда ее отпустим(т.е. придет сообщение WM_LBUTTONUP). Прошу помощи. Если есть вопросы - отвечу.
8.4K
23 марта 2010 года
z0rch
275 / / 02.09.2008
вы хотите получить после того, как отпустим ЛКМ, двумерный массив, заполненный миллионом значений (х,у), которые успела пробежать мышь, или расстояние в пикселях, от момента ДО нажатия ЛКМ до момента отпускания?
9.1K
23 марта 2010 года
motorw
134 / / 15.12.2009
Очевидно, Вы меня не поняли. Имеется окно. В клиентской части мы нажимаем левую кнопку мыши, и не отпускаем. Нам нужно узнать только количество пройденных пикселей от места нажатия до того места, где мы кнопочку отпустим. Т.е. если мы нажали в середине окна(будем считать (x;y)), отвели ровно вправо(по прямой линии), отпустили кнопку, то получится (x+x1;y+y1), где (x1;y1) - координаты, где мы отпустили левую кнопку мыши. Неважно как она двигалась в это время(туда сюда, вниз-вверх, как угодно), нужно лишь знать вектор. координаты нажатия, и координаты того места, где отпустили кнопку.
Так яснее?

Прошу прощения, как-то упустил часть Вашего поста после "или". Да, именно так.
8.4K
23 марта 2010 года
z0rch
275 / / 02.09.2008
ничего страшного, вечером это простительно ;)
итак, идея такая - обрабатывая WM_LBUTTONDOWN, сохраняем позицию курсора - это в вашем случае (x;y), обрабатывая WM_LBUTTONUP сохраняем новую позицию курсора (x1;y1) и сразу же считаем вектор.
теперь вопрос: проблема в написании кода или в чем то еще?

p.s.
Цитата:
...отвели ровно вправо(по прямой линии), отпустили кнопку, то получится (x+x1;y+y1)...


на самом деле получится (x,y+y1) :)

9.1K
23 марта 2010 года
motorw
134 / / 15.12.2009
Цитата:
итак, идея такая - обрабатывая WM_LBUTTONDOWN, сохраняем позицию курсора - это в вашем случае (x;y), обрабатывая WM_LBUTTONUP сохраняем новую позицию курсора (x1;y1) и сразу же считаем вектор.


Вот:)

Цитата:
теперь вопрос: проблема в написании кода или в чем то еще?


Вопрос в том - как узнать эти координаты? wparam-lparam?

Цитата:
на самом деле получится (x,y+y1)


А не (x+x1;y) ? :)
Теперь, внимание, самый волнующий меня вопрос. Видели ролик maemo 5 user interface? Дело даже не в ролике, просто в нем наглядно показано плавное передвижение рабочих столов(справа-налево). Как это реализовать с окнами в винде? Именно плавно.
p.s. в ролике 18-21 секунды.

8.4K
24 марта 2010 года
z0rch
275 / / 02.09.2008
Цитата: motorw

Вопрос в том - как узнать эти координаты? wparam-lparam?


координаты мыши можно узнать, ну например, так GetCursorPos

Цитата: motorw
А не (x+x1;y) ? :)


ну, если быть совсем честными, то сначала надо определиться, что мы берем за x, а что за у :)

|---------------------------------------------------------y
|
| если брать так, то мой вариант верный будет =)
|
x

Цитата: motorw

Теперь, внимание, самый волнующий меня вопрос. Видели ролик maemo 5 user interface? Дело даже не в ролике, просто в нем наглядно показано плавное передвижение рабочих столов(справа-налево). Как это реализовать с окнами в винде? Именно плавно.
p.s. в ролике 18-21 секунды.


переместили окно на немножко пикселей - сделали задержку - повторили первый шаг =)

9.0K
24 марта 2010 года
grag63
71 / / 23.01.2006
x - (short)LOWORD(lParam), y - (short)HIWORD(lParam)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог