For some reason ->Poll() fails everytime with error 0 which has like 4 rather generic errors applied to it. The joypad works perfectly in other emulators.
Any ideas?
Code:
GUID GUID_SysJoystick;
LPDIRECTINPUT8 LPDI8;
LPDIRECTINPUTDEVICE8 Keyboard;
LPDIRECTINPUTDEVICE8 Joystick;
BOOL CALLBACK GotJoystick(DIDEVICEINSTANCE * lpcdidi, LPVOID pvRef)
{
//*(GUID *)pvRef = lpcdidi->guidProduct;
//strcpy(String, lpcdidi->tszProductName);
//MessageBox(NULL, String, "", 0);
GUID_SysJoystick = lpcdidi->guidInstance;
return DIENUM_CONTINUE;
}
void CreateDirectInput()
{
DirectInput8Create(GetModuleHandle(NULL), DIRECTINPUT_VERSION, IID_IDirectInput8, (LPVOID *)&LPDI8, NULL);
/*LPDI8->CreateDevice(GUID_SysKeyboard, &Keyboard, NULL);
Keyboard->SetDataFormat(&c_dfDIKeyboard);
Keyboard->SetCooperativeLevel(Parent.hWnd, DISCL_FOREGROUND | DISCL_NONEXCLUSIVE);*/
if (LPDI8->EnumDevices(DI8DEVCLASS_GAMECTRL, (LPDIENUMDEVICESCALLBACKA)GotJoystick, &GUID_SysJoystick, DIEDFL_ATTACHEDONLY) != DI_OK)
MessageBox(NULL, "ED Joystick Fail!", "", 0);
if (LPDI8->CreateDevice(GUID_SysJoystick, &Joystick, NULL) != DI_OK)
MessageBox(NULL, "CD Joystick Fail!", "", 0);
if (Joystick->SetCooperativeLevel(Parent.hWnd, DISCL_FOREGROUND | DISCL_NONEXCLUSIVE) != DI_OK)
MessageBox(NULL, "SCL Joystick Fail!", "", 0);
if (Joystick->SetDataFormat(&c_dfDIJoystick) != DI_OK)
MessageBox(NULL, "SDF Joystick Fail!", "", 0);
if (Joystick->Acquire() != DI_OK)
MessageBox(NULL, "A1 Joystick Fail!", "", 0);
if (Joystick->Poll() != DI_OK)
{
sprintf(String, "%d", GetLastError());
MessageBox(NULL, "P1 Joystick Fail!", String, 0);
}
if (Joystick->GetDeviceState(sizeof(DIJOYSTATE), &dijs) != DI_OK)
MessageBox(NULL, "GDS1 Joystick Fail!", "", 0);
}
LPDIRECTINPUT8 LPDI8;
LPDIRECTINPUTDEVICE8 Keyboard;
LPDIRECTINPUTDEVICE8 Joystick;
BOOL CALLBACK GotJoystick(DIDEVICEINSTANCE * lpcdidi, LPVOID pvRef)
{
//*(GUID *)pvRef = lpcdidi->guidProduct;
//strcpy(String, lpcdidi->tszProductName);
//MessageBox(NULL, String, "", 0);
GUID_SysJoystick = lpcdidi->guidInstance;
return DIENUM_CONTINUE;
}
void CreateDirectInput()
{
DirectInput8Create(GetModuleHandle(NULL), DIRECTINPUT_VERSION, IID_IDirectInput8, (LPVOID *)&LPDI8, NULL);
/*LPDI8->CreateDevice(GUID_SysKeyboard, &Keyboard, NULL);
Keyboard->SetDataFormat(&c_dfDIKeyboard);
Keyboard->SetCooperativeLevel(Parent.hWnd, DISCL_FOREGROUND | DISCL_NONEXCLUSIVE);*/
if (LPDI8->EnumDevices(DI8DEVCLASS_GAMECTRL, (LPDIENUMDEVICESCALLBACKA)GotJoystick, &GUID_SysJoystick, DIEDFL_ATTACHEDONLY) != DI_OK)
MessageBox(NULL, "ED Joystick Fail!", "", 0);
if (LPDI8->CreateDevice(GUID_SysJoystick, &Joystick, NULL) != DI_OK)
MessageBox(NULL, "CD Joystick Fail!", "", 0);
if (Joystick->SetCooperativeLevel(Parent.hWnd, DISCL_FOREGROUND | DISCL_NONEXCLUSIVE) != DI_OK)
MessageBox(NULL, "SCL Joystick Fail!", "", 0);
if (Joystick->SetDataFormat(&c_dfDIJoystick) != DI_OK)
MessageBox(NULL, "SDF Joystick Fail!", "", 0);
if (Joystick->Acquire() != DI_OK)
MessageBox(NULL, "A1 Joystick Fail!", "", 0);
if (Joystick->Poll() != DI_OK)
{
sprintf(String, "%d", GetLastError());
MessageBox(NULL, "P1 Joystick Fail!", String, 0);
}
if (Joystick->GetDeviceState(sizeof(DIJOYSTATE), &dijs) != DI_OK)
MessageBox(NULL, "GDS1 Joystick Fail!", "", 0);
}
Any ideas?