手机版

Windows下对游戏杆编程(3)

发布时间:2021-06-06   来源:未知    
字号:

介绍游戏杆的编程

#define MM_JOY2BUTTONDOWN 0x3B6

#define MM_JOY1BUTTONUP 0x3B7

#define MM_JOY2BUTTONUP 0x3B8

要释放游戏杆的捕获时,使用joyReleaseCapture函数。它只有一个参数,就是游戏杆的标识JOYSTICKID1或JOYSTICKID2。

注意:

1.我们一般喜欢在游戏的大循环中自己轮询输入信息,而不是监视消息队列。实际上,接受消息的方式比下面要讲到的直接轮询的效率低一些,对游戏杆的反应有明显的延迟。

2.我用两个手柄来测试,一个北通,一个酷豹。酷豹总是被识别为JOYSTICKID1,而北通总是被识别为JOYSTICKID2。然后我改用两个完全相同的北通手柄来测试,则其中 一个被识别为JOYSTICKID2,另一个不被识别,而JOYSTICKID1则被认为未插入。这个问题我现在还不知道原因和解决方法。另一个问题:倘若我只插入酷豹手柄,或者插入一个北通和一个酷豹,则窗口可以正确接收手柄消息。但是只插入一个北通的话,可以正确检测到手柄的存在,但是接受不到手柄的消息。莫非还缺少了什么步骤?还望高人指点。

轮询:

主要是利用joyGetPosEx函数主动取得游戏杆信息。这样我们就可以在游戏循环中对手柄状态进行轮询。joyGetPosEx定义如下:

MMRESULT joyGetPosEx(UINT uJoyID, LPJOYINFOEX pji);

[1] uJoyID ----指定游戏杆,它可以是JOYSTICKID1或JOYSTICKID2,即第一、第二个游戏杆。

[2] pji ---- 函数通过这个参数返回游戏杆的信息。参数的类型定义如下:

typedef struct joyinfoex_tag {

DWORD dwSize; /* size of structure */

DWORD dwFlags; /* flags to indicate what to return */

DWORD dwXpos; /* x position */

DWORD dwYpos; /* y position */

Windows下对游戏杆编程(3).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
×
二维码
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)