Проблема — мышь находится в координатах 0,0 (левый верхний угол экрана). Но мы продолжаем упорно двигать мышь вверх и влево. Событие WM_MOUSEMOVE при этом уже не возникает, т.к. система решила, что УСЁ, дальше двигать нельзя. Но, тем не менее, мне надо как-то узнать о том, что мышь все же продолжает двигаться в "запрещенном" направлении. Как бы об этом узнать, не изменяя программным образом позицию курсора мыши (или же изменяя)?
Пример — BatlleField 1942, летаем на самолете, или катаемся на танке и крутим башней. В этой программе мы можем бесконечно двигать мышкой в одном направлении. В класическом же решении, когда курсор мыши упирается в границу экрана (или окна на весь экран), то сообщения от мыши перестают поступать.
Мысли есть, как отловить факт движения мыши, когда курсор мыши находится на границе экрана?
Re: Событие WM_MOUSEMOVE когда мышь уперлась в конец экрана
Ну если ты сделаешь SetCapture(дескриптор_твоего_окна) то события от мыши все же будут поступать, и там уже сам смотри вышел ты за границу или нет. Ну а потом соответственно реагируй
Re[2]: Событие WM_MOUSEMOVE когда мышь уперлась в конец экра
Здравствуйте, ak545, Вы писали:
A>Проблема — мышь находится в координатах 0,0 (левый верхний угол экрана). Но мы продолжаем упорно двигать мышь вверх и влево. Событие WM_MOUSEMOVE при этом уже не возникает, т.к. система решила, что УСЁ, дальше двигать нельзя. Но, тем не менее, мне надо как-то узнать о том, что мышь все же продолжает двигаться в "запрещенном" направлении. Как бы об этом узнать, не изменяя программным образом позицию курсора мыши (или же изменяя)? A>Пример — BatlleField 1942, летаем на самолете, или катаемся на танке и крутим башней. В этой программе мы можем бесконечно двигать мышкой в одном направлении. В класическом же решении, когда курсор мыши упирается в границу экрана (или окна на весь экран), то сообщения от мыши перестают поступать. A>Мысли есть, как отловить факт движения мыши, когда курсор мыши находится на границе экрана?
В играх курсор мыши постоянно позиционируется в центр экрана, а по экрану ползает суррогат, которым управляешь сам. Можешь сделать похожим образом — договариваешься сам с собой, что мышу позволено двигаться только в нужном тебе прямоугольнике. Если мыша выходит за него — позиционируешь на границу этого прямоугольника. Прямоугольник делаешь на пару пискселей меньше чем экран и все.
Re[3]: Событие WM_MOUSEMOVE когда мышь уперлась в конец экра
AE>Хотя конечно если речь идет об экране то в серьез мой ответ не воспринимать
Речь идет об окне размеры которого весь экран. Причем окно полноэкранное (ChangeDisplaySettings(&dm, CDS_FULLSCREEN))
Re[2]: Событие WM_MOUSEMOVE когда мышь уперлась в конец экра
Здравствуйте, Plutonia Experiment, Вы писали:
PE>В играх курсор мыши постоянно позиционируется в центр экрана, а по экрану ползает суррогат, которым управляешь сам. Можешь сделать похожим образом — договариваешься сам с собой, что мышу позволено двигаться только в нужном тебе прямоугольнике. Если мыша выходит за него — позиционируешь на границу этого прямоугольника. Прямоугольник делаешь на пару пискселей меньше чем экран и все.
Кстати, играл в кваке — там курсор появляется только тогда, когда MessageBox на экран появлялся — и тогда курсора два — квачевый и виндовый. И оба двигаются синхронно Я к тому, что может ShowCursor(FALSE) пригодится
Re[2]: Событие WM_MOUSEMOVE когда мышь уперлась в конец экра
Здравствуйте, Plutonia Experiment, Вы писали:
PE>В играх курсор мыши постоянно позиционируется в центр экрана, а по экрану ползает суррогат, которым управляешь сам. Можешь сделать похожим образом — договариваешься сам с собой, что мышу позволено двигаться только в нужном тебе прямоугольнике. Если мыша выходит за него — позиционируешь на границу этого прямоугольника. Прямоугольник делаешь на пару пискселей меньше чем экран и все.
ДА! Это, вероятно, самое оно — правильное решение! Спасибо за дельный совет!!!
Re[3]: Событие WM_MOUSEMOVE когда мышь уперлась в конец экра
Здравствуйте, AlexEagle, Вы писали:
AE>Кстати, играл в кваке — там курсор появляется только тогда, когда MessageBox на экран появлялся — и тогда курсора два — квачевый и виндовый. И оба двигаются синхронно Я к тому, что может ShowCursor(FALSE) пригодится