Bagikan melalui


Struktur DIJOYTYPEINFO (dinputd.h)

Struktur DIJOYTYPEINFO berisi informasi tentang jenis joystick.

Sintaks

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;

Anggota

dwSize

Menentukan ukuran struktur dalam byte. Anggota ini harus diinisialisasi sebelum struktur digunakan.

hws

Pengaturan perangkat keras Joystick.

clsidConfig

Menentukan CLSID untuk objek konfigurasi jenis joystick. Teruskan CLSID ini ke CoCreateInstance untuk membuat objek konfigurasi. Bidang ini nol jika jenis tidak memiliki konfigurasi kustom.

wszDisplayName[MAX_JOYSTRING]

Nama tampilan untuk jenis joystick. Nama tampilan adalah nama yang harus digunakan untuk menampilkan nama jenis joystick kepada pengguna akhir.

wszCallout[MAX_JOYSTICKOEMVXDNAME]

Perangkat yang bertanggung jawab untuk menangani polling untuk perangkat jenis ini. Ini adalah string null jika callout polling global akan digunakan.

wszHardwareId[MAX_JOYSTRING]

ID perangkat keras untuk jenis joystick. ID perangkat keras digunakan oleh Plug and Play pada Windows 2000 dan Windows 98 (hanya DirectX 7.0) untuk menemukan driver untuk joystick.

dwFlags1

Bendera jenis Joystick. Anggota ini dapat diatur ke kombinasi bendera berikut.

JOYTYPE_ZEROGAMEENUMOEMDATA

Bidang data OEM Zero GameEnum.

JOYTYPE_NOAUTODETECTGAMEPORT

Perangkat tidak mendukung olahraga permainan Autodetect.

JOYTYPE_NOHIDDIRECT

Jangan gunakan HID secara langsung untuk perangkat ini. (Hanya Windows 98.)

JOYTYPE_DEFAULTPROPSHEET

CPL mengambil alih lembar properti kustom.

dwFlags2

Kombinasi pemfilteran perangkat dan bendera penimpaan jenis/subjenis perangkat. Bendera pemfilteran perangkat harus ditempatkan di WORD tinggi dwFlags2. Jenis perangkat dan subjenis masing-masing harus ditempatkan di WORD anggota yang rendah dan tinggi.

Bendera Pemfilteran Perangkat

Sembunyikan perangkat yang tidak diklasifikasikan.

JOYTYPE_MOUSEHIDE

Sembunyikan tikus.

JOYTYPE_KEYBHIDE

Sembunyikan keyboard.

JOYTYPE_GAMEHIDE

Sembunyikan pengontrol permainan.

JOYTYPE_HIDEACTIVE

Sembunyikan bendera aktif. Bendera ini harus disertakan jika ada bendera sembunyikan lainnya yang ditentukan.

Jenis Perangkat dan Bendera Penimpaan Subjenis

Jenis Perangkat Subjenis Perangkat
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]

Keterangan

"Jenis joystick" menjelaskan bagaimana DirectInput harus berkomunikasi dengan perangkat dan bagaimana seharusnya melaporkan data perangkat. Misalnya, "Frobozz Industries SuperStick 5X adalah joystick tiga sumbu, lima tombol dengan sumbu ketiga yang dilaporkan sebagai bit pertama pada port kedua."

DirectInput dilengkapi dengan jenis joystick yang telah ditentukan sebelumnya berikut, semuanya dengan sumbu di lokasi defaultnya:

  • Dua sumbu, dua tombol joystick.
  • Pad permainan dua tombol.
  • Dua tombol penerbangan yoke.
  • Penerbangan dua tombol yoke dengan pembatasan.
  • Tiga sumbu, dua tombol joystick.
  • Tiga sumbu, empat tombol joystick.
  • Pad permainan empat tombol.
  • Empat tombol kuk penerbangan.
  • Penerbangan empat tombol yoke dengan pembatasan.
Jika jenis joystick memiliki bendera JOY_HWS_ISGAMEPORTDRIVER yang diatur dalam anggota dwFlags struktur JOYHWSETTINGS, maka anggota wszCallout dari struktur DIJOYTYPEINFO berisi nama driver yang dapat digunakan sebagai pendorong global. Jenis joystick harus ditampilkan pada daftar driver global dan tidak ditampilkan pada daftar jenis joystick yang dapat ditetapkan.

Baru di DirectX 8.0

Anggota dwFlags2 ditambahkan ke struktur DIJOYCONFIG. Anggota ini membawa informasi yang mengontrol bagaimana DirectInput menghitung perangkat ke aplikasi. Anggota dwFlags2 membawa bendera penimpaan jenis perangkat dan subjenis dalam kata rendah, dan bendera "menyembunyikan" enumerasi perangkat dalam kata tinggi. Jenis perangkat dan bendera penimpaan subjenis mengontrol bagaimana DirectInput memerankan perangkat Anda ke aplikasi yang menggunakan DirectInput. Ini adalah bendera yang sama dengan yang diterima aplikasi dari DirectInput selama enumerasi perangkat. Misalnya, jika perangkat Anda dijelaskan dalam firmware-nya sebagai perangkat telepon, biasanya tidak akan dijumlahkan ke game karena perangkat telepon tidak dianggap relevan dengan game. Namun, jika Anda menggunakan DI8DEVTYPE_DEVICECTRL dan DI8DEVTYPEDEVICECONTROL_COMMSSELECTION untuk menggambarkan perangkat ini, DirectInput mengambil alih data yang diambilnya dari firmware dan menghitung perangkat ke game.

Kata tinggi dwFlags2 dapat diatur untuk berisi bendera yang mencakup bagaimana DirectInput menghitung perangkat ke aplikasi DirectInput. Misalnya, beberapa perangkat mendeklarasikan beberapa koleksi HID tingkat atas. Perangkat semacam itu mungkin menyatakan bahwa perangkat dapat bertindak sebagai keyboard, mouse, dan joystick semuanya dalam satu. Umumnya, satu atau beberapa koleksi tingkat atas ini hanyalah perangkat phantom, yang seharusnya tidak dijumlahkan ke game. Untuk perangkat ini, kata tinggi dwFlags2 dapat diatur ke kombinasi bendera JOYTYPE_HIDEACTIVE, JOYTYPE_MOUSEHIDE, dan JOYTYPE_KEYBHIDE. Bendera JOYTYPE_HIDEACTIVE menunjukkan bahwa DirectInput tidak boleh menghitung perangkat berdasarkan semua jenisnya. Bendera JOYTYPE_MOUSEHIDE dan JOYTYPE_KEYBHIDE juga ada dalam kata tinggi menunjukkan kepada DirectInput bahwa enumerasi mouse dan keyboard phantom pada perangkat harus ditekan. Perhatikan bahwa aplikasi dapat menyertakan bendera DIEDFL_INCLUDEHIDDEN (dijelaskan dalam dokumentasi Microsoft Windows SDK) untuk menghitung perangkat, meskipun disembunyikan.

Persyaratan

Persyaratan Nilai
Header dinputd.h