Форум: "Media";
Текущий архив: 2007.10.21;
Скачать: [xml.tar.bz2];
ВнизИспользование джойстика. Проблема с joySetCapture. Найти похожие ветки
← →
DVM © (2006-12-22 10:05) [0]Столкнулся с проблемой. Делаю вызов joySetCapture(). Все ок - сообщения от джойстика начинают приходить указанному в параметрах окну. Делаю joyReleaseCapture. Тоже получается - сообщения приходить перестают. Но вот если опять вызвать joySetCapture() - то ничего более не происходит. До перезапуска программы от джойстика сообщения более не поступают. Почему? Никто не сталкивался?
← →
Сергей М. © (2006-12-22 10:08) [1]Return Values
Returns JOYERR_NOERROR if successful or one of the following error values.
Value Description
MMSYSERR_NODRIVER The joystick driver is not present.
MMSYSERR_INVALPARAM Windows 95/98/Me: Invalid joystick ID or hwnd is NULL.
JOYERR_NOCANDO Cannot capture joystick input because a required service (such as a Windows timer) is unavailable.
JOYERR_UNPLUGGED The specified joystick is not connected to the system.
JOYERR_PARMS Windows NT/2000/XP: Invalid joystick ID or hwnd is NULL.
← →
DVM © (2006-12-22 10:15) [2]
> Сергей М. © (22.12.06 10:08) [1]
Вы за кого меня держите? MSDN я читать умею и результат выполнения функций всегда проверяю. Так вот: joySetCapture() возвращает JOYERR_NOERROR при повторном вызове из того же самого приложения (естесственно до этого вызывалось joyReleaseCapture). Похоже на баг системы. WinXP SP2
← →
oxffff © (2006-12-22 10:20) [3]А разве так еще делают?
А как же DIRECTINPUT?
DirectInput8Create(MainInstance,DIRECTINPUT_VERSION,IID_IDirectInput8,DirectInpu t8,nil);
DirectInput8.CreateDevice(GUID_Joystick,DirectJoyDevice,nil);
DirectJoyDevice.SetCooperativeLevel(Handle,DISCL_NONEXCLUSIVE or DISCL_BACKGROUND);
DirectJoyDevice.SetDataFormat(c_dfDIJoystick);
DirectJoyDevice.Acquire;
← →
DVM © (2006-12-22 10:29) [4]
> А разве так еще делают?
Ну а почему бы нет?
← →
Сергей М. © (2006-12-22 10:37) [5]
> естесственно до этого вызывалось joyReleaseCapture
Она тоже вернула успех ?
← →
DVM © (2006-12-22 10:45) [6]
> Она тоже вернула успех ?
Да
← →
DVM © (2006-12-22 10:50) [7]Есть правда другой вариант - по таймеру опрашивать joyGetPos(), но это лишняя нагрузка на систему (если частота опроса высокая).
> oxffff © (22.12.06 10:20) [3]
DirectX как то не очень хочется привлекать - это все таки не игра. Просто разрабатываю компонент один, к управлению которым очень подходит джойстик (промышленный) - так вот при получении фокуса компонент должен захватывать джойстик - при потере фокуса освобождать джойстик. Вот повторный захват не получается.
← →
Сергей М. © (2006-12-22 10:52) [8]
> DVM
Приводи фрагменты своего кода, посмотрим что там к чему ...
← →
DVM © (2006-12-22 10:57) [9]
> Сергей М. © (22.12.06 10:52) [8]
Проблема явно не в моем коде. Точно так же ведут себя все компоненты, которые удалось найти (на www.torry.net) - все они используют joySetCapture/joyReleaseCapture для захвата/освобождения джойстика - и такая проблема наблюдается со всеми компонентами.
Упрощенный вариант кода могу набрасать - но это вряд ли поможет делу.
Может кто решал проблему подобную?
← →
Сергей М. © (2006-12-22 11:18) [10]
> DVM © (22.12.06 10:57) [9]
Ну если так, то похоже на системный баг.
А не пробовал запускать всю эту петрушку в режиме совместимости с той или иной ОС, отличной от ХР ?
← →
DVM © (2006-12-22 11:22) [11]
> А не пробовал запускать всю эту петрушку в режиме совместимости
> с той или иной ОС, отличной от ХР ?
Не, не помогает. Поискал в гугле - тоже один человек спрашивал насчет подобного - так похоже и не ответил никто ему.
← →
oxffff © (2006-12-22 11:27) [12]
> DVM © (22.12.06 11:22) [11]
>
> > А не пробовал запускать всю эту петрушку в режиме совместимости
>
> > с той или иной ОС, отличной от ХР ?
>
> Не, не помогает. Поискал в гугле - тоже один человек спрашивал
> насчет подобного - так похоже и не ответил никто ему.
Значит остальные как-то решили проблему, если она вообще была.
← →
tramp_viy © (2006-12-27 09:28) [13]У меня тоже самое под ХP, 2003Serv
правда под 2000 все нормально,
Ума не приложу где его взять :(
← →
DevilDevil © (2006-12-27 16:29) [14]могу посоветовать опробовать DirectInput. если и там баги будут, то баг в системе ;)
← →
Reindeer Moss Eater © (2006-12-28 11:49) [15]Так по любому DInput.
А если кнопок скажем больше чем 4?
← →
XProger © (2006-12-29 13:34) [16]Reindeer Moss Eater, реализоывал джойстик на WinAPI до 32 кнопок + pov + 6 осей. Единственный минус - Feedback нельзя :)
Делал не мессагами, а постоянным опросом состояния...
← →
DVM © (2007-01-09 15:48) [17]
> А если кнопок скажем больше чем 4?
Какая разница сколько кнопок?
> Делал не мессагами, а постоянным опросом состояния...
Ну вот мне тоже пришлось так делать из-за бага этого.
Страницы: 1 вся ветка
Форум: "Media";
Текущий архив: 2007.10.21;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.044 c