문제

DirectInput을 사용하여 입력 장치를 처리하고 각 장치의 장치와 요소를 열거합니다.

내 게임 패드의 아날로그 스틱을 사용할 때는 0-65535 범위의 값을보고합니다. 이거야 언제나 모든 유형의 절대 축의 경우?

그렇지 않은 경우 : dx8 입력 요소의 dideviceobjectdata :: dwdata의 범위를 찾는 방법이 있습니까? 내가 생각할 수있는 유일한 옵션은 내 앱 내부에서 홈 제작 내부 교정을 사용하는 것입니다.

도움이 되었습니까?

해결책 2

Goz가 너무 달콤하게 말하면서 나는 다음을 수행했습니다.

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를 사용하여 범위를 얻을 수없고 적절한 디프로 프랜즈 구조를 채울 수 없습니까? DipRop_Range Guid를 사용하십시오.

에서 : http://www.wingmanteam.com/files/tools/dxtweak/readme.txt

게임 컨트롤러 드라이버는 일반적으로 축 위치 정보를 0에서 655 사이의 정수 값으로보고합니다. DirectInput은 이러한 값을 최대 0 ~ 65535까지 선형으로 스케일링합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top