我使用的DirectInput来处理输入设备,我枚举每个设备上的设备和元件。

当使用我的游戏垫的模拟棒,它们取值范围为0-65535报告值。这是的总是的所有类型的绝对轴的情况?

如果不是:有任何方法找出一个DX8输入元件的DIDEVICEOBJECTDATA :: dwData的(枚举与DIDFT_ABSAXIS)的范围?我能想到的唯一的其他选择是使用一些自制的内部校准我的应用程序里面,那声音太“80年代是真实的。

有帮助吗?

解决方案 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结构的范围内,以填补?使用DIPROP_RANGE GUID。

自: http://www.wingmanteam.com/files/Tools /DXTweak/Readme.txt

一个游戏控制器驱动程序通常报告轴位置信息 为0和655之间的整数值对的DirectInput。直接输入 线性扩展这些值至0〜65535。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top