Windows API 之joystickapi(游戏摇杆)头文件2

前言

上篇博文中,已经介绍了windows底层对于游戏摇杆的支持头文件。
在本篇博文中,详细介绍游戏摇杆开发中常用的函数与结构体。
通过阅读源程序,我发现官方的说明应该是有问题的。
这篇博文应该对应的是函数joyGetDevCapsA以及结构体JOYCAPSA

函数joyGetDevCaps

这个函数用来确定摇杆的功能。

语法

MMRESULT joyGetDevCaps(
  UINT      uJoyID,
  LPJOYCAPS pjc,
  UINT      cbjc
);

定义源代码:

#ifdef UNICODE
#define joyGetDevCaps  joyGetDevCapsW
#else
#define joyGetDevCaps  joyGetDevCapsA
#endif // !UNICODE

参数

uJoyID
要识别操纵杆的标识符。有效值取值范围为-1到15。如果该值取值-1,无论设备是否存在,都可以检索JOYCAPS结构体中的成员szRegKey。

pjc
指向JOYCAPS结构体的指针。该结构体包含操纵杆的功能。

cbjc
JOYCAPS 结构体的字节容量。

返回值

如果成功,则返回 JOYERR_NOERROR。否则,会返回以下错误值:

返回值描述
MMSYSERR_NODRIVER操纵杆驱动不存在,或者操纵杆标识符无效。
MMSYSERR_INVALPARAM传递了一个无效的参数。

补充

使用函数joyGetNumDevs以设定驱动支持的操纵杆数量。
当参数cbjc的值无效时,这个函数将运行失败。

支持

名称条件
最低支持的客户端Windows 2000 Professional [desktop apps only]
最低支持的服务器Windows 2000 Server [desktop apps only]
目标平台Widows
头文件joystickapi.h (include Windows.h)
LIBWinmm.lib
DLLWinmm.dll

结构体 JOYCAPS

结构体JOYCAPS 包含操纵杆功能信息。

语法

typedef struct joycaps_tag {
  WORD wMid;
  WORD wPid;
  char szPname[MAXPNAMELEN];
  UINT wXmin;
  UINT wXmax;
  UINT wYmin;
  UINT wYmax;
  UINT wZmin;
  UINT wZmax;
  UINT wNumButtons;
  UINT wPeriodMin;
  UINT wPeriodMax;
  UINT wRmin;
  UINT wRmax;
  UINT wUmin;
  UINT wUmax;
  UINT wVmin;
  UINT wVmax;
  UINT wCaps;
  UINT wMaxAxes;
  UINT wNumAxes;
  UINT wMaxButtons;
  char szRegKey[MAXPNAMELEN];
  char szOEMVxD[MAX_JOYSTICKOEMVXDNAME];
} JOYCAPS, *PJOYCAPS, *NPJOYCAPS, *LPJOYCAPS;

定义源代码:

#ifdef UNICODE
typedef JOYCAPSW JOYCAPS;
typedef PJOYCAPSW PJOYCAPS;
typedef NPJOYCAPSW NPJOYCAPS;
typedef LPJOYCAPSW LPJOYCAPS;
#else
typedef JOYCAPSA JOYCAPS;
typedef PJOYCAPSA PJOYCAPS;
typedef NPJOYCAPSA NPJOYCAPS;
typedef LPJOYCAPSA LPJOYCAPS;
#endif // UNICODE

成员

  • wMid
    制造商标识符。
  • wpid
    产品标识符。
  • szPname
    以空为结尾的字符串。该字符串包含产品名称。
  • wXmin
    最小X坐标。
  • wXmax
    最大X坐标。
  • wYmin
    最小Y坐标。
  • wYmax
    最大Y坐标。
  • wZmin
    最小Z坐标。
  • wZmax
    最大Z坐标。
  • wNumButtons
    操纵杆按钮数量。
  • wPeriodMin
    当被 joySetCapture函数捕获时,支持的最小轮询频率。
  • wPeriodMax
    当被 joySetCapture函数捕获时,支持最大的轮询频率。
  • wRmin
    最小舵值(rudder value)。为运动的第四轴。
  • wRmax
    最大舵值(rudder value)。为运动的第四轴。
  • wUmin
    最小u坐标。为运动第五轴。
  • wUmax
    最大u坐标。为运动第五轴。
  • wVmin
    最小v坐标。为运动第六轴。
  • wVmax
    最大v坐标。为运动第六轴。
  • wCaps
    操纵杆功能。操纵杆具有功能对应的Flag。
Flag描述
JOYCAPS_HASZ操纵杆有Z坐标轴信息。
JOYCAPS_HASR操纵杆有R坐标轴(第四轴)信息。
JOYCAPS_HASU操纵杆有U坐标轴(第五轴)信息。
JOYCAPS_HASV操纵杆有V坐标值(第六轴)信息。
JOYCAPS_HASPOV操纵杆有POV信息。
JOYCAPS_POV4DIR操纵杆POV支持离散值(中心,向前,向后,向左,向右)
JOYCAPS_POVCTS操纵杆POV支持连续方位度数。
#define JOYCAPS_HASZ            0x0001
#define JOYCAPS_HASR            0x0002
#define JOYCAPS_HASU            0x0004
#define JOYCAPS_HASV            0x0008
#define JOYCAPS_HASPOV          0x0010
#define JOYCAPS_POV4DIR         0x0020
#define JOYCAPS_POVCTS          0x0040
  • wMaxAxes
    操纵杆支持的最大轴数。

  • wNumAxes
    操纵杆当前使用的轴数。

  • wMaxButtons
    操纵杆支持的最大的按键数。

  • szRegKey
    以空字符结尾的字符串。包含操纵杆注册表项。

  • szOEMVxD
    以空字符结尾的字符串。标识操纵杆驱动程序OEM。

支持

名称条件
最低支持的客户端Windows 2000 Professional [desktop apps only]
最低支持的服务器Windows 2000 Server [desktop apps only]
头文件joystickapi.h (include Windows.h)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值