怎么让2个游戏手柄同时工作! 100
我的代码入下:
--------------------------------------------
LPDIRECTINPUT7  pDI;        //声明 DirectInput 对象指针
LPDIRECTINPUTDEVICE7  pDKB; //声明输入装置对象指针
char buffer[256];           //设定缓冲区LPDIRECTINPUTDEVICE7 pDJS; //声明输入装置对象指针
DIDEVCAPS JSCap;           //声明摇杆特性结构
DIJOYSTATE  JState;        //声明摇杆状态结构  //初始化DirectInput
HINSTANCE hinst = AfxGetInstanceHandle();  //取得应用程序的 handle
if(FAILED(DirectInputCreateEx(hinst, DIRECTINPUT_VERSION, IID_IDirectInput7, (void**)&pDI, NULL))) //建立 DirectInput 对象
MessageBox("建立 DirectInput 对象失败!");
if(FAILED(pDI->CreateDeviceEx(GUID_SysKeyboard, IID_IDirectInputDevice7,(void**)&pDKB, NULL))) //建立输入装置对象
MessageBox("建立键盘输入装置失败!");
if(FAILED(pDKB->SetDataFormat(&c_dfDIKeyboard)))
MessageBox("设定数据格式失败!");
if(FAILED(pDKB->SetCooperativeLevel(m_hWnd, DISCL_BACKGROUND | DISCL_NONEXCLUSIVE)))  //设定协调层级
MessageBox("设定程序协调层级失败!");
if(FAILED(pDKB->Acquire()))   //取用输入装置
MessageBox("取用输入装置失败!");
//初始化游戏手柄1
if(FAILED(pDI->EnumDevices(DIDEVTYPE_JOYSTICK, Joysticks, NULL, DIEDFL_ATTACHEDONLY ))) //列举摇杆装置
MessageBox("列举摇杆失败!");
if(pDJS == NULL) //判断是否找到摇杆
MessageBox("无可使用的摇杆装置!");
    if(FAILED(pDJS->SetDataFormat(&c_dfDIJoystick)))
MessageBox("设定数据格式失败!");
    if(FAILED(pDJS->SetCooperativeLevel(m_hWnd, DISCL_EXCLUSIVE|DISCL_BACKGROUND )))
MessageBox("设定协调层级失败!");
JSCap.dwSize = sizeof(JSCap);
    if(FAILED(pDJS->GetCapabilities(&JSCap)))
MessageBox("取得摇杆特性失败!");
    if(FAILED(pDJS->EnumObjects(Objects, (VOID*)m_hWnd,DIDFT_AXIS)))
MessageBox("列举摇杆组件失败!");
if(FAILED(pDJS->Acquire()))
MessageBox("取得摇杆装置失败!");
BOOL CALLBACK Joysticks(LPCDIDEVICEINSTANCE lpddi,LPVOID pvRef)
{
if(FAILED(pDI->CreateDeviceEx( lpddi->guidInstance,IID_IDirectInputDevice7,
                        (VOID**)&pDJS, NULL )))
return DIENUM_CONTINUE; //继续返回第1个手柄
else 
return DIENUM_STOP;
}
-------------------------------------------------------------
在这个callback里,如果一直DIENUM_CONTINUE就得到了第2个,但第一个就没办法用了,直接DIENUM_STOP又只能用第1个!
是否要建立2个LPDIRECTINPUTDEVICE7,或者怎么做,sdk8.0的帮助文件我没看懂,例子又只支持一个手柄,具体该怎么做!请高手指点!bow