- 1、本文档共15页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C#手柄控制.doc
前段时间花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)主动方式:
即是根据我们自己的需要,按需调用joyGetPos或joyGetPosEx方法查询获取某个游戏手柄的当前状态。
而在本篇中,我们要讲解的只是“被动方式”。
joySetCapture方法的C#定义原型如下:
/// summary /// 向系统申请捕获某个游戏杆并定时将该设备的状态值通过消息发送到某个窗口 /// /summary /// param name=hWnd窗口句柄/param /// param name=uJoyID指定游戏杆(0-15),它可以是JOYSTICKID1或JOYSTICKID2/param /// param name=uPeriod每隔给定的轮询间隔就给应用程序发送有关游戏杆的信息。这个参数是以毫妙为单位的轮询频率。/param /// param name=fChanged是否允许程序当操纵杆移动一定的距离后才接受消息/param /// returns/returns [DllImport(winmm.dll)] public static extern int joySetCapture(IntPtr hWnd, int uJoyID, int uPeriod, bool fChanged);
当我们调用此方法向系统申请捕获某个游戏手柄后,如果成功,则返回JOYERR_NOERROR(值为0),否则返回其它值的话表示申请失败。并且在不再需要捕获游戏手柄时要记得调用joyReleaseCapture方法释放捕捉。
如果申请成功,系统将会定时(根据uPeriod的值决定时间的长短)将游戏手柄的状态以消息包形式发送到hWnd对应的窗口界面。所以我们必须要在程序中处理对应的消息(如重写WndProc方法进行处理)。
并且根据不同的uJoyID值,系统发送的消息号又会有所不同,如对于JOYSTICKID1系统将会分别发送以下消息包:
消息号说明MM_JOY1MOVE当手柄的位置已变动或按了某些按钮时,将会发送此消息包。MM_JOY1BU
您可能关注的文档
- 8.难忘的泼水节ppt.ppt
- 8.面试官的真切感受——50道问题的回答.doc
- 80C51键盘显示的编程.ppt
- 80T-480T注塑机参数表.xls
- 80后耳熟能详的经典歌曲.doc
- 80版壹角、伍角券荧光版研究.doc
- 81嘉祥县疃里镇第二中学体测模版.xls
- 8253练习题.ppt
- 84 玻恩近似 84 玻恩近似 84 玻恩近似 84 玻恩近似 84 玻恩.ppt
- 841光沿直线传播.ppt
- 第12课 大一统王朝的巩固 课件(20张ppt).pptx
- 第17课 君主立宪制的英国 课件.pptx
- 第6课 戊戌变法 课件(22张ppt).pptx
- 第三章 物态变化 第2节_熔化和凝固_课件 (共46张ppt) 人教版(2024) 八年级上册.pptx
- 第三章 物态变化 第5节_跨学科实践:探索厨房中的物态变化问题_课件 (共28张ppt) 人教版(2024) 八年级上册.pptx
- 2025年山东省中考英语一轮复习外研版九年级上册.教材核心考点精讲精练(61页,含答案).docx
- 2025年山东省中考英语一轮复习(鲁教版)教材核心讲练六年级上册(24页,含答案).docx
- 第12课近代战争与西方文化的扩张 课件(共48张ppt)1.pptx
- 第11课 西汉建立和“文景之治” 课件(共17张ppt)1.pptx
- 唱歌 跳绳课件(共15张ppt内嵌音频)人音版(简谱)(2024)音乐一年级上册第三单元 快乐的一天1.pptx
最近下载
- 肝囊肿开窗引流术后护理查房.pptx
- 芯源微 -国内涂胶显影设备龙头, 国内涂胶显影设备龙头, 国内涂胶显影设备龙头, 布局化学清洗和 布局化学清洗和先进封装 先进封装 20240625 -西部证券.docx
- 2023-2024年EMS审核知识统考试题及答案汇总.pdf VIP
- 一种标示牌粘贴工具.pdf VIP
- DBJ50_T-157-2022 房屋建筑和市政基础设施工程施工现场从业人员配备标准.docx
- 云南省保山市隆阳区金厂河铜锌铁多金属矿矿床水文地质特征.doc VIP
- 电化学阻抗谱(EIS)原理及谱图分析.pptx
- 中班-科学-前进!磁力车(磁铁同极相斥、异极相吸)-课件(互动版).pptx
- 柳永《八声甘州》优质课件.ppt
- 道德与法治五年级上册第四单元传统美德 源远流长 教学设计.pdf
文档评论(0)