DirectInput مجموعة التناظرية عصا التحكم
-
20-08-2019 - |
سؤال
وأنا استخدم DirectInput للتعامل مع أجهزة الإدخال، I تعداد الأجهزة والعناصر على كل جهاز.
عند استخدام العصي التناظرية على بلدي وسادة اللعبة، فإنها تقرير القيم في النطاق 0-65535. هذا هو دائما م> هو الحال بالنسبة لجميع أنواع محور المطلق؟
إذا لا: هل هناك أي طريقة لمعرفة مدى عنصر المدخلات DX8 في DIDEVICEOBJECTDATA :: dwData (المذكورة مع DIDFT_ABSAXIS)؟ الخيار الآخر الوحيد الذي يمكنني أن أفكر من هو استخدام بعض المنزل الذي أدلى المعايرة الداخلية داخل بلدي التطبيق، وهذا الصوت جدا '80S ليكون صحيحا.
المحلول 2
ووجوز وضعه حتى بعذوبة، فعلت ما يلي، التي عملت:
dev->EnumObjects(EnumElementsCallback, 0, DIDFT_ALL); BOOL CALLBACK EnumElementsCallback(LPCDIDEVICEOBJECTINSTANCE dev, LPVOID) { if ((dev->dwType & DIDFT_ABSAXIS) != 0) { DIPROPRANGE range; range.diph.dwSize = sizeof(DIPROPRANGE); range.diph.dwHeaderSize = sizeof(DIPROPHEADER); range.diph.dwHow = DIPH_BYID; range.diph.dwObj = dev->dwType; if (lDevice->mDIDevice->GetProperty(DIPROP_RANGE, &range.diph) == DI_OK) { ... = range.lMin; ... = range.lMax; } } }
نصائح أخرى
لا يمكن أن تحصل على نطاق باستخدام GetProperty ويمر في بنية DIPROPRANGE المناسب المراد شغلها؟ استخدام GUID DIPROP_RANGE.
ومن: http://www.wingmanteam.com/files/Tools /DXTweak/Readme.txt
وA تشغيل جهاز تحكم التسالي عادة تقارير المعلومات موقف محور كما قيم الأعداد الصحيحة بين 0 و 655 لDirectInput. المساهمة المباشرة جداول خطيا هذه القيم حتى 0-65535.