Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.09.2012, 10:57   #1
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию Обработка мыши

Пишу под Windows, использую WinAPI. Скажем, камера должна двигаться при перемещении мыши. Все, вроде бы, хорошо, обрабатываем WM_MOUSEMOVE. Но мышь выходит за пределы окна (или, в полноэкранном режиме, доходит до края), и сообщения перестают посылаться, так как мышь уже не над окном (соответственно, на краю экрана и движения как такового нет). Как с этим справиться?
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 10.09.2012, 12:40   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

может заставлять курсор быть по центру окна?
через SetCursorPos
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 10.09.2012, 14:39   #3
f.hump
C/C++, Asm
Участник клуба
 
Аватар для f.hump
 
Регистрация: 02.03.2010
Сообщений: 1,323
По умолчанию

http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
f.hump вне форума Ответить с цитированием
Старый 10.09.2012, 15:14   #4
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

Цитата:
Сообщение от Пепел Феникса
может заставлять курсор быть по центру окна?
через SetCursorPos
SetCursorPos посылает WM_MOUSEMOVE, который в итоге перекроет пришедший WM_MOUSEMOVE. Можно, конечно, глобально запомнить, что мы вызвали SetCursorPos, но это уже какой-то быдлокод.

f.hump не совсем понял, что эта функция делает?
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 10.09.2012, 15:46   #5
f.hump
C/C++, Asm
Участник клуба
 
Аватар для f.hump
 
Регистрация: 02.03.2010
Сообщений: 1,323
По умолчанию

Функция устанавливает захват сообщений курсора: делает редирект всего маус траффика на выбранное окно. При таком ракладе окно будет получать сообщения мыши даже если курсор находится вне окна, при условии, что одна из клавиш мыши была нажата над окном и продолжает удерживаться вне окна.

Плюс, есть вот эта тема:
http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
На случай если надо отлавливать выход с окна.
f.hump вне форума Ответить с цитированием
Старый 10.09.2012, 15:52   #6
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

К сожалению, мне нужно отлавливать и когда клавиши мыши не нажаты
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 10.09.2012, 18:00   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

ClipCursor может попробовать?
тока обрабатывать потерю фокуса.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 11.09.2012, 20:30   #8
Kostia
Участник клуба
 
Аватар для Kostia
 
Регистрация: 21.11.2007
Сообщений: 1,691
По умолчанию

GetCursorPos() / SetCursorPos() наше все!
Kostia вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка нажатия мыши вне окна DelhiProgramer Общие вопросы Delphi 1 06.09.2012 18:28
Обработка нажатия кнопок мыши turbovitalik Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 12.09.2011 08:49
Обработка колеса мыши в TScrollBox mutabor Общие вопросы Delphi 6 01.04.2010 10:17
Обработка события - вращение ролика мыши Дамир Общие вопросы .NET 1 25.12.2009 13:44
Обработка правой кнокпи мыши в TCoolTrayIcon Shouldercannon Общие вопросы Delphi 1 28.06.2009 11:47