Войти
ПрограммированиеФорумГрафика

Мышь в движке

#0
8:25, 7 фев. 2003

Как лучше всего реализовать DI мышь в объектном движке?
У меня сейчас вызывается callback функция в ответ на клик, но при этом не слишком понятно как сообщать проге об отпускании.

Как реализуется Smooth mouse и стоит ли поручать это движку?

DI иногда не может захватить мышь эксклюзивно, хотя никого, кто мог бы ее перехватить не запущено. В чем дело?


#1
8:12, 8 фев. 2003

Из того что все молчат, следует, что никто этим не занимался?
А как вы, простите игры без мышей делали?

Возникла еще проблема:
При полноэкранном OpenGL DirectInput вообще ничего не захватывает.

#2
10:12, 8 фев. 2003

Rayal
> DI иногда не может захватить мышь эксклюзивно, хотя никого, кто мог бы ее перехватить не запущено. В чем дело?

Нужно, конечно, чтоб ты выяснил на каком этапе происходит ошибка и проанализировать возвращяемый результат (HRESULT) функциями DI.

Убедись что на WM_ACTIVATE вызывается IDirectInputDevice8::Acquire() (при автивизации!)

Обрабатываешь WM_ENTERMENULOOP, WM_EXITMENULOOP?

Ты IDirectInputDevice8::Acquire() вообще вызвал? :)

#3
3:58, 9 фев. 2003

beavis

while( hRet == DIERR_INPUTLOST )
      hRet = sInpData.pDIKeyboard->Acquire();

Выборка и захват происходит в отдельном потоке, но не в этом суть.
Выяснилось что ошибка возникает при SetCooperativeLevel. Проги которая могла бы иметь больший приоритет запущено не было.

Но основной вопрос не в этом, а в том как лучше реализовать обмен данными с прогой юзающей мой мышиный класс.

#4
8:08, 11 фев. 2003

HRESULT на всем пути следования абсолютно DI_OK, а мышь и клава то работают то нет.

При вызове IDirectInputDevice8::Acquire() возвращается ошибка DIERR_HANDLEEXISTS, но только после потери фокуса, а до этого тихо не работает и везде возвращает DI_OK.

Я уже ничего не понимаю. Как он может не работать если ошибок нет?

ПрограммированиеФорумГрафика

Тема в архиве.