龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VC开发 >

VC学习:获取游戏手柄的按键输入

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
//可以查看按游戏手柄按钮时的情况. //USB接口的游戏手柄 //编译环境:Windows 2000 server+VC++ 6.0+Win2K DDK #include #include #include #include extern "C" { #include } void main() { GUID HidGuid; // 查找本系统中H

  //可以查看按游戏手柄按钮时的情况.

  //USB接口的游戏手柄

  //编译环境:Windows 2000 server+VC++ 6.0+Win2K DDK

  #include
  #include
  #include
  #include
  extern "C"
  {
  #include
  }

  void main()
  {
  GUID HidGuid;

  // 查找本系统中HID类的GUID标识
  HidD_GetHidGuid(&HidGuid);
  _tprintf("系统中HID类的GUID标识为:%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x ",
  HidGuid.Data1,HidGuid.Data2 ,HidGuid.Data3 ,
  HidGuid.Data4[0],HidGuid.Data4[1],HidGuid.Data4[2],
  HidGuid.Data4[3],HidGuid.Data4[4],HidGuid.Data4[5],
  HidGuid.Data4[6],HidGuid.Data4[7]);

  // 准备查找符合HID规范的USB设备
  HDEVINFO hDevInfo = SetupDiGetClassDevs(&HidGuid,
  NULL,
  NULL,
  DIGCF_PRESENT | DIGCF_DEVICEINTERFACE);
  if (hDevInfo == INVALID_HANDLE_VALUE)
  {
  _tprintf("符合HID规范的USB设备发生错误 ");

  return;
  }

  _tprintf("正在查找可用的USB设备... ");

  DWORD MemberIndex = 0;
  SP_DEVICE_INTERFACE_DATA DeviceInterfaceData;
  BOOL bSuccess = FALSE;

  DeviceInterfaceData.cbSize = sizeof(SP_DEVICE_INTERFACE_DATA);
  do
  {
  bSuccess = SetupDiEnumDeviceInterfaces(hDevInfo,
  NULL,
  &HidGuid,
  MemberIndex,
  &DeviceInterfaceData);
  if ((!bSuccess) && (GetLastError() == ERROR_NO_MORE_ITEMS))
  {
  if(MemberIndex == 0)
  _tprintf("抱歉,未找到可用的USB设备! ");
  else
  _tprintf("没有更多的可用的USB设备! ");

  SetupDiDestroyDeviceInfoList(hDevInfo);
  return;
  }

收藏文章
表情删除后不可恢复,是否删除
取消
确定
图片正在上传,请稍后...
评论内容为空!
还没有评论,快来抢沙发吧!
按钮 内容不能为空!
立刻说两句吧! 查看0条评论
精彩图集

赞助商链接