天天看點

Windows API 之joystickapi(遊戲搖杆)頭檔案2前言函數joyGetDevCaps結構體 JOYCAPS

文章目錄

  • 前言
  • 函數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)

繼續閱讀