Событие WM_MOUSEMOVE когда мышь уперлась в конец экрана
От: ak545  
Дата: 07.09.04 12:28
Оценка:
Проблема — мышь находится в координатах 0,0 (левый верхний угол экрана). Но мы продолжаем упорно двигать мышь вверх и влево. Событие WM_MOUSEMOVE при этом уже не возникает, т.к. система решила, что УСЁ, дальше двигать нельзя. Но, тем не менее, мне надо как-то узнать о том, что мышь все же продолжает двигаться в "запрещенном" направлении. Как бы об этом узнать, не изменяя программным образом позицию курсора мыши (или же изменяя)?
Пример — BatlleField 1942, летаем на самолете, или катаемся на танке и крутим башней. В этой программе мы можем бесконечно двигать мышкой в одном направлении. В класическом же решении, когда курсор мыши упирается в границу экрана (или окна на весь экран), то сообщения от мыши перестают поступать.
Мысли есть, как отловить факт движения мыши, когда курсор мыши находится на границе экрана?
Re: Событие WM_MOUSEMOVE когда мышь уперлась в конец экрана
От: AlexEagle Украина http://www.vik.oil
Дата: 07.09.04 12:35
Оценка:
Здравствуйте, ak545, Вы писали:

Ну если ты сделаешь SetCapture(дескриптор_твоего_окна) то события от мыши все же будут поступать, и там уже сам смотри вышел ты за границу или нет. Ну а потом соответственно реагируй
Re[2]: Событие WM_MOUSEMOVE когда мышь уперлась в конец экра
От: AlexEagle Украина http://www.vik.oil
Дата: 07.09.04 12:37
Оценка:
Здравствуйте, AlexEagle, Вы писали:

Хотя конечно если речь идет об экране то в серьез мой ответ не воспринимать
Re: Событие WM_MOUSEMOVE когда мышь уперлась в конец экрана
От: Plutonia Experiment Беларусь http://blogs.rsdn.org/ikemefula
Дата: 07.09.04 12:53
Оценка: 3 (1)
Здравствуйте, ak545, Вы писали:

A>Проблема — мышь находится в координатах 0,0 (левый верхний угол экрана). Но мы продолжаем упорно двигать мышь вверх и влево. Событие WM_MOUSEMOVE при этом уже не возникает, т.к. система решила, что УСЁ, дальше двигать нельзя. Но, тем не менее, мне надо как-то узнать о том, что мышь все же продолжает двигаться в "запрещенном" направлении. Как бы об этом узнать, не изменяя программным образом позицию курсора мыши (или же изменяя)?

A>Пример — BatlleField 1942, летаем на самолете, или катаемся на танке и крутим башней. В этой программе мы можем бесконечно двигать мышкой в одном направлении. В класическом же решении, когда курсор мыши упирается в границу экрана (или окна на весь экран), то сообщения от мыши перестают поступать.
A>Мысли есть, как отловить факт движения мыши, когда курсор мыши находится на границе экрана?


В играх курсор мыши постоянно позиционируется в центр экрана, а по экрану ползает суррогат, которым управляешь сам. Можешь сделать похожим образом — договариваешься сам с собой, что мышу позволено двигаться только в нужном тебе прямоугольнике. Если мыша выходит за него — позиционируешь на границу этого прямоугольника. Прямоугольник делаешь на пару пискселей меньше чем экран и все.
Re[3]: Событие WM_MOUSEMOVE когда мышь уперлась в конец экра
От: ak545  
Дата: 07.09.04 12:53
Оценка:
AE>Хотя конечно если речь идет об экране то в серьез мой ответ не воспринимать
Речь идет об окне размеры которого весь экран. Причем окно полноэкранное (ChangeDisplaySettings(&dm, CDS_FULLSCREEN))
Re[2]: Событие WM_MOUSEMOVE когда мышь уперлась в конец экра
От: AlexEagle Украина http://www.vik.oil
Дата: 07.09.04 13:07
Оценка:
Здравствуйте, Plutonia Experiment, Вы писали:

PE>В играх курсор мыши постоянно позиционируется в центр экрана, а по экрану ползает суррогат, которым управляешь сам. Можешь сделать похожим образом — договариваешься сам с собой, что мышу позволено двигаться только в нужном тебе прямоугольнике. Если мыша выходит за него — позиционируешь на границу этого прямоугольника. Прямоугольник делаешь на пару пискселей меньше чем экран и все.


Кстати, играл в кваке — там курсор появляется только тогда, когда MessageBox на экран появлялся — и тогда курсора два — квачевый и виндовый. И оба двигаются синхронно Я к тому, что может ShowCursor(FALSE) пригодится
Re[2]: Событие WM_MOUSEMOVE когда мышь уперлась в конец экра
От: ak545  
Дата: 07.09.04 13:12
Оценка:
Здравствуйте, Plutonia Experiment, Вы писали:

PE>В играх курсор мыши постоянно позиционируется в центр экрана, а по экрану ползает суррогат, которым управляешь сам. Можешь сделать похожим образом — договариваешься сам с собой, что мышу позволено двигаться только в нужном тебе прямоугольнике. Если мыша выходит за него — позиционируешь на границу этого прямоугольника. Прямоугольник делаешь на пару пискселей меньше чем экран и все.


ДА! Это, вероятно, самое оно — правильное решение! Спасибо за дельный совет!!!
Re[3]: Событие WM_MOUSEMOVE когда мышь уперлась в конец экра
От: ak545  
Дата: 07.09.04 13:14
Оценка:
Здравствуйте, AlexEagle, Вы писали:

AE>Кстати, играл в кваке — там курсор появляется только тогда, когда MessageBox на экран появлялся — и тогда курсора два — квачевый и виндовый. И оба двигаются синхронно Я к тому, что может ShowCursor(FALSE) пригодится


ShowCursor(FALSE) — это безусловно
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.