سؤال

وأنا استخدم 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.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top