DIJOYTYPEINFO 结构 (dinputd.h)

DIJOYTYPEINFO 结构包含有关游戏杆类型的信息。

语法

typedef struct DIJOYTYPEINFO {
  DWORD            dwSize;
  JOYREGHWSETTINGS hws;
  CLSID            clsidConfig;
  WCHAR            wszDisplayName[MAX_JOYSTRING];
  WCHAR            wszCallout[MAX_JOYSTICKOEMVXDNAME];
  WCHAR            wszHardwareId[MAX_JOYSTRING];
  DWORD            dwFlags1;
  DWORD            dwFlags2;
  WCHAR            wszMapFile[MAX_JOYSTRING];
} DIJOYTYPEINFO, *LPDIJOYTYPEINFO;

成员

dwSize

指定结构的大小(以字节为单位)。 必须先初始化此成员,然后才能使用结构。

hws

游戏杆硬件设置。

clsidConfig

为游戏杆类型配置对象指定 CLSID。 将此 CLSID 传递给 CoCreateInstance 以创建配置对象。 如果类型没有自定义配置,则此字段为零。

wszDisplayName[MAX_JOYSTRING]

游戏杆类型的显示名称。 显示名称是用于向最终用户显示游戏杆类型的名称的名称。

wszCallout[MAX_JOYSTICKOEMVXDNAME]

负责处理此类型设备的轮询的设备。 如果要使用全局轮询标注,则这是一个 null 字符串。

wszHardwareId[MAX_JOYSTRING]

游戏杆类型的硬件 ID。 Windows 2000 和 Windows 98 (DirectX 7.0 上的即插即用仅) 使用硬件 ID 来查找游戏杆的驱动程序。

dwFlags1

游戏杆类型标志。 可以将此成员设置为以下标志的组合。

JOYTYPE_ZEROGAMEENUMOEMDATA

Zero GameEnum 的 OEM 数据字段。

JOYTYPE_NOAUTODETECTGAMEPORT

设备不支持自动检测游戏端口。

JOYTYPE_NOHIDDIRECT

请勿直接对此设备使用 HID。 仅 (Windows 98.)

JOYTYPE_DEFAULTPROPSHEET

CPL 重写自定义属性表。

dwFlags2

设备筛选和设备类型/子类型替代标志的组合。 设备筛选标志应放置在 dwFlags2 的高 WORD 中。 设备类型和子类型应分别放置在成员的低 WORD 和高 WORD 中。

设备筛选标志

隐藏未分类的设备。

JOYTYPE_MOUSEHIDE

隐藏鼠标。

JOYTYPE_KEYBHIDE

隐藏键盘。

JOYTYPE_GAMEHIDE

隐藏游戏控制器。

JOYTYPE_HIDEACTIVE

隐藏标志处于活动状态。 如果指定了任何其他隐藏标志,则必须包含此标志。

设备类型和子类型替代标志

设备类型 设备子类型
DI8DEVTYPE_1STPERSON DI8DEVTYPE1STPERSON_LIMITED
DI8DEVTYPE1STPERSON_UNKNOWN
DI8DEVTYPE1STPERSON_SIXDOF
DI8DEVTYPE1STPERSON_SHOOTER
DI8DEVTYPE_DEVICE N/A
DI8DEVTYPE_DEVICECTRL DI8DEVTYPEDEVICECTRL_UNKNOWN
DI8DEVTYPEDEVICECTRL_COMMSSELECTION
DI8DEVTYPEDEVICECTRL_COMMSSELECTION_HARDWIRED
DI8DEVTYPE_DRIVING DI8DEVTYPEDRIVING_LIMITED
DI8DEVTYPEDRIVING_COMBINEDPEDALS
DI8DEVTYPEDRIVING_DUALPEDALS
DI8DEVTYPEDRIVING_THREEPEDALS
DI8DEVTYPEDRIVING_HANDHELD
DI8DEVTYPE_FLIGHT DI8DEVTYPEFLIGHT_LIMITED
DI8DEVTYPEFLIGHT_STICK
DI8DEVTYPEFLIGHT_YOKE
DI8DEVTYPEFLIGHT_RC
DI8DEVTYPE_GAMEPAD DI8DEVTYPEGAMEPAD_LIMITED
DI8DEVTYPEGAMEPAD_STANDARD
DI8DEVTYPEGAMEPAD_TILT
DI8DEVTYPE_JOYSTICK DI8DEVTYPEJOYSTICK_LIMITED
DI8DEVTYPEJOYSTICK_STANDARD
DI8DEVTYPEJOYSTICK_ENHANCED
DI8DEVTYPE_KEYBOARD DI8DEVTYPEKEYBOARD_UNKNOWN
DI8DEVTYPEKEYBOARD_PCXT
DI8DEVTYPEKEYBOARD_OLIVETTI
DI8DEVTYPEKEYBOARD_PCAT
DI8DEVTYPEKEYBOARD_PCENH
DI8DEVTYPEKEYBOARD_NOKIA1050
DI8DEVTYPEKEYBOARD_NOKIA9140
DI8DEVTYPEKEYBOARD_NEC98
DI8DEVTYPEKEYBOARD_NEC98LAPTOP
DI8DEVTYPEKEYBOARD_NEC98106
DI8DEVTYPEKEYBOARD_JAPAN106
DI8DEVTYPEKEYBOARD_JAPANAX
DI8DEVTYPEKEYBOARD_J3100
DI8DEVTYPE_MOUSE DI8DEVTYPEMOUSE_UNKNOWN
DI8DEVTYPEMOUSE_TRADITIONAL
DI8DEVTYPEMOUSE_FINGERSTICK
DI8DEVTYPEMOUSE_TOUCHPAD
DI8DEVTYPEMOUSE_TRACKBALL
DI8DEVTYPEMOUSE_ABSOLUTE
DI8DEVTYPE_REMOTE DI8DEVTYPEREMOTE_UNKNOWN
DI8DEVTYPE_SCREENPOINTER DI8DEVTYPESCREENPTR_UNKNOWN
DI8DEVTYPESCREENPTR_LIGHTGUN
DI8DEVTYPESCREENPTR_LIGHTPEN
DI8DEVTYPESCREENPTR_TOUCH
DI8DEVTYPE_SUPPLEMENTAL DI8DEVTYPESUPPLEMENTAL_UNKNOWN
DI8DEVTYPESUPPLEMENTAL_2NDHANDCONTROLLER
DI8DEVTYPESUPPLEMENTAL_HEADTRACKER
DI8DEVTYPESUPPLEMENTAL_HANDTRACKER
DI8DEVTYPESUPPLEMENTAL_SHIFTSTICKGATE
DI8DEVTYPESUPPLEMENTAL_SHIFTER
DI8DEVTYPESUPPLEMENTAL_THROTTLE
DI8DEVTYPESUPPLEMENTAL_SPLITTHROTTLE
DI8DEVTYPESUPPLEMENTAL_COMBINEDPEDALS
DI8DEVTYPESUPPLEMENTAL_DUALPEDALS
DI8DEVTYPESUPPLEMENTAL_THREEPEDALS
DI8DEVTYPESUPPLEMENTAL_RUDDERPEDALS

wszMapFile[MAX_JOYSTRING]

注解

“游戏杆类型”描述 DirectInput 应如何与设备通信,以及如何报告设备数据。 例如,“Frobozz Industries SuperStick 5X 是一个三轴五按钮游戏杆,第三个轴报告为第二个端口上的第一个位。”

DirectInput 附带以下预定义游戏杆类型,所有类型在其默认位置都有轴:

  • 双轴双按钮游戏杆。
  • 双按钮游戏板。
  • 双按钮飞行纽扣。
  • 带油门的双按钮飞行锁。
  • 三轴双按钮游戏杆。
  • 三轴四按钮游戏杆。
  • 四按钮游戏板。
  • 四按钮飞行扣。
  • 带油门的四按钮飞行锁。
如果游戏杆类型在 JOYHWSETTINGS 结构的 dwFlags 成员中设置了JOY_HWS_ISGAMEPORTDRIVER标志,则 DIJOYTYPEINFO 结构的 wszCallout 成员包含可用作全局驱动程序的驱动程序的名称。 游戏杆类型应显示在全局驱动程序列表中,而不是显示在可分配的游戏杆类型列表中。

DirectX 8.0 中的新增功能

dwFlags2 成员已添加到 DIJOYCONFIG 结构。 此成员携带的信息控制 DirectInput 如何将设备枚举到应用程序。 dwFlags2 成员在低字中携带设备类型和子类型替代标志,并在高字中携带设备枚举“隐藏”标志。 设备类型和子类型替代标志控制 DirectInput 如何将设备描绘成使用 DirectInput 的应用程序。 这些标志与应用程序在设备枚举期间从 DirectInput 接收的标志相同。 例如,如果你的设备在其固件中被描述为电话设备,则通常不会将其枚举到游戏,因为电话设备被认为与游戏无关。 但是,如果使用DI8DEVTYPE_DEVICECTRL和DI8DEVTYPEDEVICECONTROL_COMMSSELECTION来描述此设备,则 DirectInput 会替代它从固件检索的数据,并将该设备枚举到游戏。

dwFlags2 的高字可以设置为包含将 DirectInput 枚举设备的方式限定为 DirectInput 应用程序的标志。 例如,某些设备声明多个顶级 HID 集合。 此类设备可能声明它可以一起充当键盘、鼠标和游戏杆。 通常,这些顶级集合中的一个或多个只是虚拟设备,不应将其枚举到游戏中。 对于此设备, dwFlags2 的高字可以设置为JOYTYPE_HIDEACTIVE、JOYTYPE_MOUSEHIDE和JOYTYPE_KEYBHIDE标志的组合。 JOYTYPE_HIDEACTIVE标志指示 DirectInput 不应按设备的所有类型枚举设备。 高字中的JOYTYPE_MOUSEHIDE和JOYTYPE_KEYBHIDE标志也向 DirectInput 指示应禁止枚举设备上的虚拟鼠标和键盘。 请注意,应用程序可以包含Microsoft Windows SDK文档中描述的DIEDFL_INCLUDEHIDDEN (,) 标志来枚举设备,即使设备处于隐藏状态也是如此。

要求

要求
Header dinputd.h