- 1、本文档共20页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
/flyli_x/archive/2008/04/05/2252932.aspx
USB 手柄或游戏控制杆并不一定只在打游戏的时候才用得到, 为了控制以 PC 机为核心的机
器人能够在手动的控制下运动,略微研究了下 USB 手柄的控制方法。
通过查阅相关资料, 查到了 2 中 USB 手柄的控制方法, 一种是基于 windows DDK
的 USB 开发,由于没有搞到 DDK 所以暂且不谈这种方法
我们来说说第二种方法,就是以基于 DirectX8.1 以上的 USB 手柄控制方法,使用这种方法
需要下载 Direct 的 SDK ,运用到他的运行库。 Dinput8.lib,DxErr.Lib,dxguid.lib 另外还需要加
载 direct 的一些头文件,至于头文件具体用到了那些我也没有测试, 我把这些可能用到的程
序都发到了我的资源中,地址是: /source/402394
其中将所有的 .h 文件复制到 vc 的运行库下,把 .lib 文件加载到工程中就可以使用了。
其使用方法也是相当的简单:
1. 将 CDirectInput 实例化
2. 调用 InitDirectInput 初始化 USB 手柄,通过其返回值判断手柄是否被识别
3. 声明一个 DIJOYSTA TE2 类型的值用于接收按键的状态
4. 用 GetState_Now() 声明的 DIJOYSTATE2 的值进行赋值 ;
5. DIJOYSTATE2 中部分键值的对应关系 lx ,ly 分别是对应上下左右的方向,
rgbbutton[] 的数组是分别用来对应其他的手柄按键。
遇到具体的问题可以再联系我哈
一下是我封装后的类
//********************************************************************
// DirectInput.h 文件
//*****************************************************************************
***
#pragma once
#define DIRECTINPUT_VERSION 0x0800
#define _CRT_SECURE_NO_DEPRECA TE
#ifndef _WIN32_DCOM
#define _WIN32_DCOM
#endif
#include windows.h
#include commctrl.h
#include basetsd.h
#include dinput.h
#include dinputd.h
#include assert.h
#include oleauto.h
#include shellapi.h
#include wbemidl.h
#pragma warning( disable : 4996 ) // disable deprecated warning
#include strsafe.h
#pragma warning( default : 4996 )
#include resource.h
//=============================================================
//宏定义
#define SAFE_DELETE(p) { if(p) { delete (p); (p)=NULL; } }
#define SAFE_RELEASE(p) { if(p) { (p)-Release(); (p)=NULL; } }
struct XINPUT_DEVICE_NODE
{
DWORD dwVidPid;
XINPUT_DEVICE_NODE* pNext;
};
struct DI_ENUM_CONTEXT
{
DIJOYCONFIG* pPreferredJoyCfg;
bool bP
文档评论(0)