文章目錄
- 前言
- 函數joyGetDevCaps
-
- 文法
- 參數
- 傳回值
- 補充
- 支援
- 結構體 JOYCAPS
-
- 文法
- 成員
- 支援
前言
在上篇博文中,已經介紹了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) |
LIB | Winmm.lib |
DLL | Winmm.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) |