2013-10-27 4 views
0

В настоящее время я просто использую сообщение WM_MOUSEMOVE, но оно ограничивает движение мыши до максимального разрешения. Итак, каков наилучший способ захвата мыши с помощью Win32 (в окне OpenGl)? Я не хочу использовать freeglut или любую дополнительную библиотеку.Захват движения мыши в win32/Opengl

ответ

2

Для игр и в реальном времени DirectInput очень подходит, он умеренно прост в использовании.

Это не ядро ​​win32 api, способ получения ввода winapi - это либо GetCursorPos/SetCursorPos, управляемый вашим собственным циклом обновления, поэтому вы запрашиваете и перезагружаете свою собственную частоту.

Или SetCapture, а затем по телефону WM_MOUSEMOVE вы звоните SetCursorPos. Пункт установки курсора pos - дать место для перемещения, чтобы вы могли получить дельту, сумму, которую перемещал курсор с момента последнего обновления, а затем вернули курсор в центр вашего окна.

0

Если вы хотите, чтобы иметь возможность фиксировать события мыши после того, как мышь существует окно, то вы можете посмотреть в SetCapture функции

Если ваша проблема в том, что вы хотите, чтобы сделать игру FPS и вы хотите, чтобы ваш персонаж мог вращаться в непрерывном движении, тогда вы хотите установить положение мыши в центр окна после каждого события перемещения мыши и ввода ввода в зависимости от разницы между положением курсора при событии перемещения мыши и в центре экрана. Чтобы установить положение мыши, вы можете использовать функцию SetCursorPos.

0

Ваши лучшие ставки должны либо использовать DirectInput (что может быть немного больно настроено), либо RawInput.

Существует довольно обширный пример, доступный на странице Using RawInput (см. Пример 2).

Смежные вопросы