📄 dinput.h
字号:
/**************************************************************************** * * Copyright (C) 1996 Microsoft Corporation. All Rights Reserved. * * File: dinput.h * Content: DirectInput include file * ****************************************************************************/#ifndef __DINPUT_INCLUDED__#define __DINPUT_INCLUDED__#ifdef _WIN32#define COM_NO_WINDOWS_H#include <objbase.h>#endif#ifdef __cplusplusextern "C" {#endif#define DIRECTINPUT_VERSION 0x0300/**************************************************************************** * * Class IDs * ****************************************************************************/DEFINE_GUID(CLSID_DirectInput, 0x25E609E0,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);DEFINE_GUID(CLSID_DirectInputDevice,0x25E609E1,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);/**************************************************************************** * * Interfaces * ****************************************************************************/DEFINE_GUID(IID_IDirectInputA, 0x89521360,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);DEFINE_GUID(IID_IDirectInputW, 0x89521361,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);DEFINE_GUID(IID_IDirectInputDeviceA,0x5944E680,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);DEFINE_GUID(IID_IDirectInputDeviceW,0x5944E681,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);/**************************************************************************** * * Predefined object types * ****************************************************************************/DEFINE_GUID(GUID_XAxis, 0xA36D02E0,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);DEFINE_GUID(GUID_YAxis, 0xA36D02E1,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);DEFINE_GUID(GUID_ZAxis, 0xA36D02E2,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);DEFINE_GUID(GUID_RAxis, 0xA36D02E3,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);DEFINE_GUID(GUID_UAxis, 0xA36D02E4,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);DEFINE_GUID(GUID_VAxis, 0xA36D02E5,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);DEFINE_GUID(GUID_Button, 0xA36D02F0,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);DEFINE_GUID(GUID_Key, 0x55728220,0xD33C,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);DEFINE_GUID(GUID_POV, 0xA36D02F2,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);/**************************************************************************** * * Predefined product GUIDs * ****************************************************************************/DEFINE_GUID(GUID_SysMouse, 0x6F1D2B60,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);DEFINE_GUID(GUID_SysKeyboard,0x6F1D2B61,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);/**************************************************************************** * * Interfaces and Structures... * ****************************************************************************//**************************************************************************** * * IDirectInputDevice * ****************************************************************************/#define DIDEVTYPE_DEVICE 1#define DIDEVTYPE_MOUSE 2#define DIDEVTYPE_KEYBOARD 3#define DIDEVTYPE_JOYSTICK 4#define DIDEVTYPEMOUSE_UNKNOWN 1#define DIDEVTYPEMOUSE_TRADITIONAL 2#define DIDEVTYPEMOUSE_FINGERSTICK 3#define DIDEVTYPEMOUSE_TOUCHPAD 4#define DIDEVTYPEMOUSE_TRACKBALL 5#define DIDEVTYPEKEYBOARD_PCXT 1#define DIDEVTYPEKEYBOARD_OLIVETTI 2#define DIDEVTYPEKEYBOARD_PCAT 3#define DIDEVTYPEKEYBOARD_PCENH 4#define DIDEVTYPEKEYBOARD_NOKIA1050 5#define DIDEVTYPEKEYBOARD_NOKIA9140 6#define DIDEVTYPEKEYBOARD_NEC98 7#define DIDEVTYPEKEYBOARD_NEC98LAPTOP 8#define DIDEVTYPEKEYBOARD_NEC98106 9#define DIDEVTYPEKEYBOARD_JAPAN106 10#define DIDEVTYPEKEYBOARD_JAPANAX 11#define DIDEVTYPEKEYBOARD_J3100 12#define GET_DIDEVICE_TYPE(dwDevType) LOBYTE(dwDevType)#define GET_DIDEVICE_SUBTYPE(dwDevType) HIBYTE(dwDevType)typedef struct _DIDEVCAPS { DWORD dwSize; DWORD dwFlags; DWORD dwDevType; DWORD dwAxes; DWORD dwButtons; DWORD dwPOVs;} DIDEVCAPS, *LPDIDEVCAPS;#define DIDC_ATTACHED 0x00000001#define DIDC_POLLEDDEVICE 0x00000002#define DIDFT_ALL 0x00000000#define DIDFT_RELAXIS 0x00000001#define DIDFT_ABSAXIS 0x00000002#define DIDFT_AXIS 0x00000003#define DIDFT_PSHBUTTON 0x00000004#define DIDFT_TGLBUTTON 0x00000008#define DIDFT_BUTTON 0x0000000C#define DIDFT_POV 0x00000010#define DIDFT_ANYINSTANCE 0x0000FF00#define DIDFT_MAKEINSTANCE(n) ((BYTE)(n) << 8)#define DIDFT_GETTYPE(n) LOBYTE(n)#define DIDFT_GETINSTANCE(n) HIBYTE(n)typedef struct _DIOBJECTDATAFORMAT { const GUID *pguid; DWORD dwOfs; DWORD dwType; DWORD dwFlags;} DIOBJECTDATAFORMAT, *LPDIOBJECTDATAFORMAT;typedef const DIOBJECTDATAFORMAT *LPCDIOBJECTDATAFORMAT;typedef struct _DIDATAFORMAT { DWORD dwSize; DWORD dwObjSize; DWORD dwFlags; DWORD dwDataSize; DWORD dwNumObjs; LPDIOBJECTDATAFORMAT rgodf;} DIDATAFORMAT, *LPDIDATAFORMAT;typedef const DIDATAFORMAT *LPCDIDATAFORMAT;#define DIDF_ABSAXIS 0x00000001#define DIDF_RELAXIS 0x00000002extern const DIDATAFORMAT c_dfDIMouse;extern const DIDATAFORMAT c_dfDIKeyboard;typedef struct DIDEVICEOBJECTINSTANCEA { DWORD dwSize; GUID guidType; DWORD dwOfs; DWORD dwType; DWORD dwFlags; CHAR tszName[MAX_PATH];} DIDEVICEOBJECTINSTANCEA, *LPDIDEVICEOBJECTINSTANCEA;typedef struct DIDEVICEOBJECTINSTANCEW { DWORD dwSize; GUID guidType; DWORD dwOfs; DWORD dwType; DWORD dwFlags; WCHAR tszName[MAX_PATH];} DIDEVICEOBJECTINSTANCEW, *LPDIDEVICEOBJECTINSTANCEW;#ifdef UNICODEtypedef DIDEVICEOBJECTINSTANCEW DIDEVICEOBJECTINSTANCE;typedef LPDIDEVICEOBJECTINSTANCEW LPDIDEVICEOBJECTINSTANCE;#elsetypedef DIDEVICEOBJECTINSTANCEA DIDEVICEOBJECTINSTANCE;typedef LPDIDEVICEOBJECTINSTANCEA LPDIDEVICEOBJECTINSTANCE;#endif // UNICODEtypedef const DIDEVICEOBJECTINSTANCEA *LPCDIDEVICEOBJECTINSTANCEA;typedef const DIDEVICEOBJECTINSTANCEW *LPCDIDEVICEOBJECTINSTANCEW;typedef const DIDEVICEOBJECTINSTANCE *LPCDIDEVICEOBJECTINSTANCE;typedef BOOL (FAR PASCAL * LPDIENUMDEVICEOBJECTSCALLBACKA)(LPCDIDEVICEOBJECTINSTANCEA, LPVOID);typedef BOOL (FAR PASCAL * LPDIENUMDEVICEOBJECTSCALLBACKW)(LPCDIDEVICEOBJECTINSTANCEW, LPVOID);#ifdef UNICODE#define LPDIENUMDEVICEOBJECTSCALLBACK LPDIENUMDEVICEOBJECTSCALLBACKW#else#define LPDIENUMDEVICEOBJECTSCALLBACK LPDIENUMDEVICEOBJECTSCALLBACKA#endif // !UNICODEtypedef struct DIPROPHEADER { DWORD dwSize; DWORD dwHeaderSize; DWORD dwObj; DWORD dwHow;} DIPROPHEADER, *LPDIPROPHEADER;typedef const DIPROPHEADER *LPCDIPROPHEADER;#define DIPH_DEVICE 0#define DIPH_BYOFFSET 1#define DIPH_BYID 2typedef struct DIPROPDWORD { DIPROPHEADER diph; DWORD dwData;} DIPROPDWORD, *LPDIPROPDWORD;typedef const DIPROPDWORD *LPCDIPROPDWORD;typedef struct DIPROPRANGE { DIPROPHEADER diph; LONG lMin; LONG lMax;} DIPROPRANGE, *LPDIPROPRANGE;typedef const DIPROPRANGE *LPCDIPROPRANGE;#define DIPROPRANGE_NOMIN ((LONG)0x80000000)#define DIPROPRANGE_NOMAX ((LONG)0x7FFFFFFF)#ifdef __cplusplus#define MAKEDIPROP(prop) (*(const GUID *)(prop))#else#define MAKEDIPROP(prop) ((REFGUID)(prop))#endif#define DIPROP_BUFFERSIZE MAKEDIPROP(1)#define DIPROP_AXISMODE MAKEDIPROP(2)#define DIPROPAXISMODE_ABS 0#define DIPROPAXISMODE_REL 1#define DIPROP_GRANULARITY MAKEDIPROP(3)#define DIPROP_RANGE MAKEDIPROP(4)typedef struct DIDEVICEOBJECTDATA { DWORD dwOfs; DWORD dwData; DWORD dwTimeStamp; DWORD dwSequence;} DIDEVICEOBJECTDATA, *LPDIDEVICEOBJECTDATA;#define DIGDD_PEEK 0x00000001#define DISEQUENCE_COMPARE(dwSequence1, cmp, dwSequence2) \ ((int)((dwSequence1) - (dwSequence2)) cmp 0)#define DISCL_EXCLUSIVE 0x00000001#define DISCL_NONEXCLUSIVE 0x00000002#define DISCL_FOREGROUND 0x00000004#define DISCL_BACKGROUND 0x00000008typedef struct DIDEVICEINSTANCEA { DWORD dwSize; GUID guidInstance; GUID guidProduct; DWORD dwDevType; CHAR tszInstanceName[MAX_PATH]; CHAR tszProductName[MAX_PATH];} DIDEVICEINSTANCEA, *LPDIDEVICEINSTANCEA;typedef struct DIDEVICEINSTANCEW { DWORD dwSize; GUID guidInstance; GUID guidProduct; DWORD dwDevType; WCHAR tszInstanceName[MAX_PATH]; WCHAR tszProductName[MAX_PATH];} DIDEVICEINSTANCEW, *LPDIDEVICEINSTANCEW;#ifdef UNICODEtypedef DIDEVICEINSTANCEW DIDEVICEINSTANCE;typedef LPDIDEVICEINSTANCEW LPDIDEVICEINSTANCE;#elsetypedef DIDEVICEINSTANCEA DIDEVICEINSTANCE;typedef LPDIDEVICEINSTANCEA LPDIDEVICEINSTANCE;#endif // UNICODEtypedef const DIDEVICEINSTANCEA *LPCDIDEVICEINSTANCEA;typedef const DIDEVICEINSTANCEW *LPCDIDEVICEINSTANCEW;typedef const DIDEVICEINSTANCE *LPCDIDEVICEINSTANCE;#undef INTERFACE#define INTERFACE IDirectInputDeviceWDECLARE_INTERFACE_(IDirectInputDeviceW, IUnknown){
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -