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에 전달합니다. 형식에 사용자 지정 구성이 없는 경우 이 필드는 0입니다.

wszDisplayName[MAX_JOYSTRING]

조이스틱 유형의 표시 이름입니다. 표시 이름은 조이스틱 유형의 이름을 최종 사용자에게 표시하는 데 사용해야 하는 이름입니다.

wszCallout[MAX_JOYSTICKOEMVXDNAME]

이 유형의 디바이스에 대한 폴링을 처리하는 디바이스입니다. 전역 폴링 콜아웃을 사용할 경우 null 문자열입니다.

wszHardwareId[MAX_JOYSTRING]

조이스틱 유형의 하드웨어 ID입니다. 하드웨어 ID는 windows 2000 및 Windows 98(DirectX 7.0에만 해당)의 플러그 앤 플레이 조이스틱용 드라이버를 찾는 데 사용됩니다.

dwFlags1

조이스틱 유형 플래그입니다. 이 멤버는 다음 플래그의 조합으로 설정할 수 있습니다.

JOYTYPE_ZEROGAMEENUMOEMDATA

제로 GameEnum의 OEM 데이터 필드입니다.

JOYTYPE_NOAUTODETECTGAMEPORT

디바이스는 자동 검색 게임 포트를 지원하지 않습니다.

JOYTYPE_NOHIDDIRECT

이 디바이스에 HID를 직접 사용하지 마세요. (Windows 98만 해당)

JOYTYPE_DEFAULTPROPSHEET

CPL은 사용자 지정 속성 시트를 재정의합니다.

dwFlags2

디바이스 필터링 및 디바이스 유형/하위 유형 재정의 플래그의 조합입니다. 디바이스 필터링 플래그는 dwFlags2의 높은 WORD에 배치해야 합니다. 디바이스 유형 및 하위 형식은 각각 멤버의 낮음 및 상위 WORD에 배치되어야 합니다.

디바이스 필터링 플래그

분류되지 않은 디바이스를 숨깁니다.

JOYTYPE_MOUSEHIDE

마우스를 숨깁니다.

JOYTYPE_KEYBHIDE

키보드를 숨깁니다.

JOYTYPE_GAMEHIDE

게임 컨트롤러를 숨깁니다.

JOYTYPE_HIDEACTIVE

플래그 숨기기가 활성 상태입니다. 다른 숨기기 플래그가 지정된 경우 이 플래그를 포함해야 합니다.

디바이스 유형 및 하위 형식 재정의 플래그

디바이스 유형 디바이스 하위 유형
DI8DEVTYPE_1STPERSON DI8DEVTYPE1STPERSON_LIMITED
DI8DEVTYPE1STPERSON_UNKNOWN
DI8DEVTYPE1STPERSON_SIXDOF
DI8DEVTYPE1STPERSON_SHOOTER
DI8DEVTYPE_DEVICE 해당 없음
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는 세 번째 축이 두 번째 포트의 첫 번째 비트로 보고된 3축, 5개 단추 조이스틱입니다."

DirectInput에는 다음과 같이 미리 정의된 조이스틱 유형이 함께 제공되며, 모두 기본 위치에 축이 있습니다.

  • 2축, 2 단추 조이스틱.
  • 2 버튼 게임 패드.
  • 2 버튼 비행 멍에.
  • 스로틀이 있는 2 버튼 비행 멍에.
  • 3축, 2 버튼 조이스틱.
  • 3축, 4개 단추 조이스틱.
  • 4 버튼 게임 패드.
  • 4 버튼 비행 멍에.
  • 스로틀이 있는 4개의 버튼 플라이트 멍에.
조이스틱 형식에 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 애플리케이션에 열거하는 방법을 scope 플래그를 포함하도록 설정할 수 있습니다. 예를 들어 일부 디바이스는 여러 최상위 HID 컬렉션을 선언합니다. 이러한 디바이스는 모두 하나의 키보드, 마우스 및 조이스틱 역할을 할 수 있다고 선언할 수 있습니다. 일반적으로 이러한 최상위 컬렉션 중 하나 이상은 게임에 열거해서는 안 되는 가상 디바이스일 뿐입니다. 이 디바이스의 경우 dwFlags2 라는 상위 단어를 JOYTYPE_HIDEACTIVE, JOYTYPE_MOUSEHIDE 및 JOYTYPE_KEYBHIDE 플래그의 조합으로 설정할 수 있습니다. JOYTYPE_HIDEACTIVE 플래그는 DirectInput이 디바이스를 모든 형식으로 열거해서는 안 됨을 나타냅니다. 상위 단어에도 JOYTYPE_MOUSEHIDE 및 JOYTYPE_KEYBHIDE 플래그는 DirectInput에 디바이스의 가상 마우스 및 키보드 열거를 표시하지 않아야 함을 나타냅니다. 애플리케이션에는 디바이스가 숨겨져 있더라도 디바이스를 열거하는 DIEDFL_INCLUDEHIDDEN(Microsoft Windows SDK 설명서에 설명되어 있음) 플래그가 포함될 수 있습니다.

요구 사항

요구 사항
헤더 dinputd.h