CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  图形处理/算法

directinput中怎么让2个游戏手柄同时工作! 100

楼主dreamfeer(菜鸟)2003-02-04 17:24:13 在 VC/MFC / 图形处理/算法 提问

怎么让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  
  问题点数:100、回复次数:7Top

1 楼dreamfeer(菜鸟)回复于 2003-02-07 12:51:52 得分 0

难道没人做过吗!  
  ..................................Top

2 楼everandforever(Forever)回复于 2003-02-07 12:56:48 得分 10

我没做过。我猜是:建立2个LPDIRECTINPUTDEVICE7Top

3 楼dreamfeer(菜鸟)回复于 2003-02-07 13:01:50 得分 0

我也是这么想的,但是在  
  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;  
  }  
   
  里出问题了!Top

4 楼Richuen22(Vista)回复于 2003-02-07 13:29:57 得分 10

用那个即时模式试一试。  
  Top

5 楼AthlonxpX86(一坨屎)回复于 2003-02-07 17:46:55 得分 5

我只能来学习了Top

6 楼qrlvls( 空 气 )回复于 2003-02-09 17:06:32 得分 5

学习而已Top

7 楼Richuen22(Vista)回复于 2003-02-12 19:43:54 得分 70

我这里有个例子,不过由于我没有两个摇杆,不能测试。也没有看过,要的给我发个短信,我发给你。Top

相关问题

  • 游戏手柄怎样安装?
  • 游戏手柄的安装问题?
  • 请问如何在XP下添加游戏手柄
  • 为什么在2000下装不上游戏手柄的驱动
  • 如何用vc捕捉 游戏手柄的信号?
  • 如何用vc实现对游戏手柄的操作?
  • 新买的游戏手柄怎么不能用——很急,对就结帖
  • 编程累了,玩玩游戏,顺便问一下打印机口的手柄驱动如何安装?
  • 想自己做个游戏手柄模拟鼠标输入,大家给点意见!
  • 一个游戏手柄驱动程序的开发问题,有经验的朋友请多给意见。

关键词

  • 指针
  • 装置
  • null
  • directinput
  • 手柄
  • pdi
  • lpdirectinputdevice
  • pdkb
  • 摇杆
  • 对象

得分解答快速导航

  • 帖主:dreamfeer
  • everandforever
  • Richuen22
  • AthlonxpX86
  • qrlvls
  • Richuen22

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo