聪明文档网

聪明文档网

最新最全的文档下载
当前位置: 首页> C#手柄控制

C#手柄控制

时间:2022-12-05 15:32:00    下载该word文档
前段时间花38元从网上买了一对北通的USB游戏手柄,这样周末与晚上的休闲时间就可以玩玩孩儿时的SFC与街机模拟游戏了。
某日在某个网站上玩一个Flash游戏时,突然想到,如果也能使用手柄来玩Flash游戏,那该多爽。但可惜的是,目前的Flash都是不支持对游戏手柄进行编程,这不免是Flash中的一个遗憾。。
虽然Flash中不支持对游戏手柄进行编程,但我们可以换种方法,做一个辅助程序(外挂?将手柄中的操作事件转换为Flash中可接受的键盘与鼠标操作事件,这样不就可以使用游戏手柄来玩Flash游戏了吗?!于是,上网查了相关资料,但却发现只有C方面的案例,而C#一个也找不,这不打紧,自己动手,丰衣足食。
(注:类似这样的功能,网络已有现成的软件,是一个日本人开发的,叫JoyToKey对游戏手柄进行操作,大概有两种方式:采用系统API或者使用DirectInput操作游戏手柄设备。(也许还有其它方式,但我的知识范围有限,其它方式就不得而知了)
采用系统API是一种最简单的方式,因为系统已帮我们封装好了所有细节,我们只要在程序中定时取得游戏手柄设备的状态就可以了(轮循)。操作游戏手柄(杆)的API有以下几个:函数名称函数说明
joyGetNumDevs获取当前系统支持的游戏设备数量joyGetDevCaps查询获取指定的游戏杆设备以确定其性能joySetCapture向系统申请捕获某个游戏设备并定时将该设备的状态值通过消息发送到某个窗口joyReleaseCapture释放对某个游戏设备的捕获
joyGetPos获取游戏设备的坐标位置和按钮状态joyGetPosEx获取游戏设备的坐标位置和按钮状态joyGetThreshold查询指定的游戏杆设备的当前移动阈值joySetThreshold设置指定的游戏杆设备的移动阈值


其中,根据调用不同的方法又可分为两种方式。1)被动方式:
调用joySetCapture方法,向系统申请对某个游戏手柄的捕捉,如果成功申请,系统将会定时将此游戏手柄的状态信息通过消息方式通知到我们的某个窗口上。
2)主动方式:
即是根据我们自己的需要,按需调用joyGetPosjoyGetPosEx方法查询获取某个游戏手柄的当前状态。
而在本篇中,我们要讲解的只是“被动方式”。joySetCapture方法的C#定义原型如下:
//////向系统申请捕获某个游戏杆并定时将该设备的状态值通过消息发送到某个窗口//////窗口句柄///指定游戏杆(0-15,它可以是JOYSTICKID1JOYSTICKID2///每隔给定的轮询间隔就给应用程序发送有关游戏杆的信息。这个参数是以毫妙为单位的轮询频率。///是否允许程序当操纵杆移动一定的距离后才接受消息///
[DllImport("winmm.dll"]publicstaticexternintjoySetCapture(IntPtrhWnd,intuJoyID,intuPeriod,boolfChanged;当我们调用此方法向系统申请捕获某个游戏手柄后,如果成功,则返回JOYERR_NOERROR(值为0,否则返回其它值的话表示申请失败。并且在不再需要捕获游戏手柄时要记得调用joyReleaseCapture方法释放捕捉。
如果申请成功,系统将会定时(根据uPeriod的值决定时间的长短)将游戏手柄的状态以消息包形式发送到hWnd对应的窗口界面。所以我们必须要在程序中处理对应的消息(如重写WndProc方法进行处理)。
并且根据不同的uJoyID值,系统发送的消息号又会有所不同,如对于JOYSTICKID1系统将会分别发送以下消息包:

免费下载 Word文档免费下载: C#手柄控制

  • 29.8

    ¥45 每天只需1.0元
    1个月 推荐
  • 9.9

    ¥15
    1天
  • 59.8

    ¥90
    3个月

选择支付方式

  • 微信付款
郑重提醒:支付后,系统自动为您完成注册

请使用微信扫码支付(元)

订单号:
支付后,系统自动为您完成注册
遇到问题请联系 在线客服

常用手机号:
用于找回密码
图片验证码:
看不清?点击更换
短信验证码:
新密码:
 
绑定后可用手机号登录
请不要关闭本页面,支付完成后请点击【支付完成】按钮
遇到问题请联系 在线客服