Condividi tramite


Struttura DIJOYTYPEINFO (dinputd.h)

La struttura DIJOYTYPEINFO contiene informazioni su un tipo di joystick.

Sintassi

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;

Members

dwSize

Specifica le dimensioni della struttura in byte. Questo membro deve essere inizializzato prima dell'utilizzo della struttura.

hws

Impostazioni hardware joystick.

clsidConfig

Specifica un CLSID per l'oggetto di configurazione del tipo joystick. Passare questo CLSID a CoCreateInstance per creare un oggetto di configurazione. Questo campo è zero se il tipo non ha una configurazione personalizzata.

wszDisplayName[MAX_JOYSTRING]

Nome visualizzato per il tipo di joystick. Il nome visualizzato è il nome che deve essere utilizzato per visualizzare il nome del tipo di joystick all'utente finale.

wszCallout[MAX_JOYSTICKOEMVXDNAME]

Il dispositivo responsabile della gestione del polling per i dispositivi di questo tipo. Si tratta di una stringa Null se deve essere utilizzato il callout di polling globale.

wszHardwareId[MAX_JOYSTRING]

ID hardware per il tipo di joystick. L'ID hardware viene usato da Plug and Play in Windows 2000 e Windows 98 (solo DirectX 7.0) per trovare i driver per il joystick.

dwFlags1

Flag di tipo joystick. Questo membro può essere impostato su una combinazione dei flag seguenti.

JOYTYPE_ZEROGAMEENUMOEMDATA

Campo dati OEM di Zero GameEnum.

JOYTYPE_NOAUTODETECTGAMEPORT

Il dispositivo non supporta il gameport di rilevamento automatico.

JOYTYPE_NOHIDDIRECT

Non usare hid direttamente per questo dispositivo. (solo Windows 98).

JOYTYPE_DEFAULTPROPSHEET

CPL esegue l'override della finestra delle proprietà personalizzate.

dwFlags2

Combinazione di flag di override del tipo di dispositivo e tipo di dispositivo/sottotipo. I flag di filtro dei dispositivi devono essere posizionati nell'alto WORD di dwFlags2. Il tipo di dispositivo e il sottotipo devono essere posizionati rispettivamente nei word bassi e alti del membro.

Flag di filtro dei dispositivi

Nascondere i dispositivi non classificati.

JOYTYPE_MOUSEHIDE

Nascondi topi.

JOYTYPE_KEYBHIDE

Nascondere le tastiere.

JOYTYPE_GAMEHIDE

Nascondere i controller di gioco.

JOYTYPE_HIDEACTIVE

I flag nascosti sono attivi. Questo flag deve essere incluso se vengono specificati altri flag nascosti.

Flag di override del tipo di dispositivo e del sottotipo

Tipo di dispositivo Sottotipo dispositivo
DI8DEVTYPE_1STPERSON DI8DEVTYPE1STPERSON_LIMITED
DI8DEVTYPE1STPERSON_UNKNOWN
DI8DEVTYPE1STPERSON_SIXDOF
DI8DEVTYPE1STPERSON_SHOOTER
DI8DEVTYPE_DEVICE n/d
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]

Commenti

Un "tipo di joystick" descrive come DirectInput deve comunicare con il dispositivo e come deve segnalare i dati del dispositivo. Ad esempio, "A Frobozz Industries SuperStick 5X è un joystick a tre assi, a cinque pulsanti con il terzo asse segnalato come primo bit sulla seconda porta".

DirectInput include i seguenti tipi di joystick predefiniti, tutti con assi nelle posizioni predefinite:

  • Joystick a due assi, a due pulsanti.
  • Riquadro gioco a due pulsanti.
  • Yogo di volo a due pulsanti.
  • Yoke di volo a due pulsanti con limitazione.
  • Joystick a tre assi, a due pulsanti.
  • Joystick a tre assi, a quattro pulsanti.
  • Riquadro gioco a quattro pulsanti.
  • Yogo di volo a quattro pulsanti.
  • Yoke di volo a quattro pulsanti con limitazione.
Se il tipo di joystick ha il flag di JOY_HWS_ISGAMEPORTDRIVER impostato nel membro dwFlags della struttura JOYHWSETTINGS, il membro wszCallout della struttura DIJOYTYPEINFO contiene il nome di un driver che può essere usato come driver globale. Il tipo di joystick deve essere visualizzato nell'elenco dei driver globali e non visualizzato nell'elenco dei tipi di joystick che possono essere assegnati.

Novità in DirectX 8.0

Il membro dwFlags2 è stato aggiunto alla struttura DIJOYCONFIG. Questo membro contiene informazioni che controllano il modo in cui DirectInput enumera il dispositivo alle applicazioni. Il membro dwFlags2 include flag di override del tipo di dispositivo e sottotipo nella parola bassa e flag di enumerazione del dispositivo "nascondi" nella parola alta. Il tipo di dispositivo e i flag di override del sottotipo controllano il modo in cui DirectInput rappresenta il dispositivo alle applicazioni che usano DirectInput. Questi sono gli stessi flag ricevuti dalle applicazioni da DirectInput durante l'enumerazione del dispositivo. Ad esempio, se il dispositivo è descritto nel firmware come dispositivo di telefonia, normalmente non sarà enumerato nei giochi perché i dispositivi di telefonia non sono considerati rilevanti per i giochi. Tuttavia, se si usa DI8DEVTYPE_DEVICECTRL e DI8DEVTYPEDEVICECONTROL_COMMSSELECTION per descrivere questo dispositivo, DirectInput esegue l'override dei dati recuperati dal firmware ed enumera il dispositivo ai giochi.

La parola alta di dwFlags2 può essere impostata per contenere flag che includono l'ambito in cui DirectInput enumera il dispositivo nelle applicazioni DirectInput. Ad esempio, alcuni dispositivi dichiarano più raccolte HID di primo livello. Tale dispositivo potrebbe dichiarare che può agire come tastiera, un mouse e un joystick tutto in uno. In genere, una o più di queste raccolte di primo livello è semplicemente un dispositivo fantasma, che non deve essere enumerato ai giochi. Per questo dispositivo, la parola alta di dwFlags2 può essere impostata su una combinazione di JOYTYPE_HIDEACTIVE, JOYTYPE_MOUSEHIDE e flag di JOYTYPE_KEYBHIDE. Il flag JOYTYPE_HIDEACTIVE indica che DirectInput non deve enumerare il dispositivo in base a tutti i relativi tipi. I flag JOYTYPE_MOUSEHIDE e JOYTYPE_KEYBHIDE presenti anche nella parola alta indicano a DirectInput che l'enumerazione del mouse fantasma e della tastiera sul dispositivo deve essere eliminata. Si noti che le applicazioni possono includere il flag di DIEDFL_INCLUDEHIDDEN (descritto nella documentazione di Microsoft Windows SDK) per enumerare i dispositivi, anche se sono nascosti.

Requisiti

Requisito Valore
Intestazione dinputd.h