Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
15-1190570557
vladislav_osn
2007-09-23 22:02
2007.10.21
SimpleXML.pas


15-1190294594
Константинов
2007-09-20 17:23
2007.10.21
Э-э-э посоветуйте програмку для учета трафика


11-1174410437
Dmitriy___
2007-03-20 20:07
2007.10.21
ListView - проблема с LVItems


2-1191265539
Farel
2007-10-01 23:05
2007.10.21
Blob


2-1190799956
Гелена
2007-09-26 13:45
2007.10.21
Как реализовать запрет деакривации дочернего окна в MDI-приложени





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский