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 附带以下预定义游戏杆类型,所有类型在其默认位置都有轴:
- 双轴双按钮游戏杆。
- 双按钮游戏板。
- 双按钮飞行纽扣。
- 带油门的双按钮飞行锁。
- 三轴双按钮游戏杆。
- 三轴四按钮游戏杆。
- 四按钮游戏板。
- 四按钮飞行扣。
- 带油门的四按钮飞行锁。
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 |