| 1 | ' dinput.sbp
|
|---|
| 2 |
|
|---|
| 3 |
|
|---|
| 4 | #ifndef _INC_DINPUT
|
|---|
| 5 | #define _INC_DINPUT
|
|---|
| 6 |
|
|---|
| 7 |
|
|---|
| 8 | '----------------
|
|---|
| 9 | ' Version
|
|---|
| 10 | '----------------
|
|---|
| 11 |
|
|---|
| 12 | Const DIRECTINPUT_VERSION = &H0800
|
|---|
| 13 |
|
|---|
| 14 |
|
|---|
| 15 | '----------------
|
|---|
| 16 | ' Interfaces
|
|---|
| 17 | '----------------
|
|---|
| 18 |
|
|---|
| 19 | Dim IID_IDirectInput8 = [&HBF798030,&H483A,&H4DA2,[&HAA,&H99,&H5D,&H64,&HED,&H36,&H97,&H00]] As GUID
|
|---|
| 20 | Dim IID_IDirectInputDevice8 = [&H54D41080,&HDC15,&H4833,[&HA4,&H1B,&H74,&H8F,&H73,&HA3,&H81,&H79]] As GUID
|
|---|
| 21 | Dim IID_IDirectInputEffect = [&HE7E1F7C0,&H88D2,&H11D0,[&H9A,&HD0,&H00,&HA0,&HC9,&HA0,&H6E,&H35]] As GUID
|
|---|
| 22 |
|
|---|
| 23 |
|
|---|
| 24 | '-------------------------
|
|---|
| 25 | ' Predefined object types
|
|---|
| 26 | '-------------------------
|
|---|
| 27 |
|
|---|
| 28 | Dim GUID_XAxis = [&HA36D02E0,&HC9F3,&H11CF,[&HBF,&HC7,&H44,&H45,&H53,&H54,&H00,&H00]] As GUID
|
|---|
| 29 | Dim GUID_YAxis = [&HA36D02E1,&HC9F3,&H11CF,[&HBF,&HC7,&H44,&H45,&H53,&H54,&H00,&H00]] As GUID
|
|---|
| 30 | Dim GUID_ZAxis = [&HA36D02E2,&HC9F3,&H11CF,[&HBF,&HC7,&H44,&H45,&H53,&H54,&H00,&H00]] As GUID
|
|---|
| 31 | Dim GUID_RxAxis = [&HA36D02F4,&HC9F3,&H11CF,[&HBF,&HC7,&H44,&H45,&H53,&H54,&H00,&H00]] As GUID
|
|---|
| 32 | Dim GUID_RyAxis = [&HA36D02F5,&HC9F3,&H11CF,[&HBF,&HC7,&H44,&H45,&H53,&H54,&H00,&H00]] As GUID
|
|---|
| 33 | Dim GUID_RzAxis = [&HA36D02E3,&HC9F3,&H11CF,[&HBF,&HC7,&H44,&H45,&H53,&H54,&H00,&H00]] As GUID
|
|---|
| 34 | Dim GUID_Slider = [&HA36D02E4,&HC9F3,&H11CF,[&HBF,&HC7,&H44,&H45,&H53,&H54,&H00,&H00]] As GUID
|
|---|
| 35 | Dim GUID_Button = [&HA36D02F0,&HC9F3,&H11CF,[&HBF,&HC7,&H44,&H45,&H53,&H54,&H00,&H00]] As GUID
|
|---|
| 36 | Dim GUID_Key = [&H55728220,&HD33C,&H11CF,[&HBF,&HC7,&H44,&H45,&H53,&H54,&H00,&H00]] As GUID
|
|---|
| 37 | Dim GUID_POV = [&HA36D02F2,&HC9F3,&H11CF,[&HBF,&HC7,&H44,&H45,&H53,&H54,&H00,&H00]] As GUID
|
|---|
| 38 | Dim GUID_Unknown = [&HA36D02F3,&HC9F3,&H11CF,[&HBF,&HC7,&H44,&H45,&H53,&H54,&H00,&H00]] As GUID
|
|---|
| 39 |
|
|---|
| 40 |
|
|---|
| 41 | '--------------------------
|
|---|
| 42 | ' Predefined product GUIDs
|
|---|
| 43 | '--------------------------
|
|---|
| 44 |
|
|---|
| 45 | Dim GUID_SysMouse = [&H6F1D2B60,&HD5A0,&H11CF,[&HBF,&HC7,&H44,&H45,&H53,&H54,&H00,&H00]] As GUID
|
|---|
| 46 | Dim GUID_SysKeyboard = [&H6F1D2B61,&HD5A0,&H11CF,[&HBF,&HC7,&H44,&H45,&H53,&H54,&H00,&H00]] As GUID
|
|---|
| 47 | Dim GUID_Joystick = [&H6F1D2B70,&HD5A0,&H11CF,[&HBF,&HC7,&H44,&H45,&H53,&H54,&H00,&H00]] As GUID
|
|---|
| 48 | Dim GUID_SysMouseEm = [&H6F1D2B80,&HD5A0,&H11CF,[&HBF,&HC7,&H44,&H45,&H53,&H54,&H00,&H00]] As GUID
|
|---|
| 49 | Dim GUID_SysMouseEm2 = [&H6F1D2B81,&HD5A0,&H11CF,[&HBF,&HC7,&H44,&H45,&H53,&H54,&H00,&H00]] As GUID
|
|---|
| 50 | Dim GUID_SysKeyboardEm = [&H6F1D2B82,&HD5A0,&H11CF,[&HBF,&HC7,&H44,&H45,&H53,&H54,&H00,&H00]] As GUID
|
|---|
| 51 | Dim GUID_SysKeyboardEm2 = [&H6F1D2B83,&HD5A0,&H11CF,[&HBF,&HC7,&H44,&H45,&H53,&H54,&H00,&H00]] As GUID
|
|---|
| 52 |
|
|---|
| 53 |
|
|---|
| 54 | Type DIENVELOPE
|
|---|
| 55 | dwSize As DWord
|
|---|
| 56 | dwAttackLevel As DWord
|
|---|
| 57 | dwAttackTime As DWord
|
|---|
| 58 | dwFadeLevel As DWord
|
|---|
| 59 | dwFadeTime As DWord
|
|---|
| 60 | End Type
|
|---|
| 61 | TypeDef LPDIENVELOPE = *DIENVELOPE
|
|---|
| 62 |
|
|---|
| 63 |
|
|---|
| 64 | Type DIEFFECT
|
|---|
| 65 | dwSize As DWord
|
|---|
| 66 | dwFlags As DWord
|
|---|
| 67 | dwDuration As DWord
|
|---|
| 68 | dwSamplePeriod As DWord
|
|---|
| 69 | dwGain As DWord
|
|---|
| 70 | dwTriggerButton As DWord
|
|---|
| 71 | dwTriggerRepeatInterval As DWord
|
|---|
| 72 | cAxes As DWord
|
|---|
| 73 | rgdwAxes As *DWord
|
|---|
| 74 | rglDirection As *Long
|
|---|
| 75 | lpEnvelope As LPDIENVELOPE
|
|---|
| 76 | cbTypeSpecificParams As DWord
|
|---|
| 77 | lpvTypeSpecificParams As VoidPtr
|
|---|
| 78 | dwStartDelay As DWord
|
|---|
| 79 | End Type
|
|---|
| 80 | TypeDef LPDIEFFECT = *DIEFFECT
|
|---|
| 81 |
|
|---|
| 82 |
|
|---|
| 83 | Type DIFILEEFFECT
|
|---|
| 84 | dwSize As DWord
|
|---|
| 85 | GuidEffect As GUID
|
|---|
| 86 | lpDiEffect As LPDIEFFECT
|
|---|
| 87 | szFriendlyName[MAX_PATH-1] As Char
|
|---|
| 88 | End Type
|
|---|
| 89 | TypeDef LPDIFILEEFFECT = *DIFILEEFFECT
|
|---|
| 90 |
|
|---|
| 91 |
|
|---|
| 92 | Type DIEFFESCAPE
|
|---|
| 93 | dwSize As DWord
|
|---|
| 94 | dwCommand As DWord
|
|---|
| 95 | lpvInBuffer As VoidPtr
|
|---|
| 96 | cbInBuffer As DWord
|
|---|
| 97 | lpvOutBuffer As VoidPtr
|
|---|
| 98 | cbOutBuffer As DWord
|
|---|
| 99 | End Type
|
|---|
| 100 | TypeDef LPDIEFFESCAPE = *DIEFFESCAPE
|
|---|
| 101 |
|
|---|
| 102 |
|
|---|
| 103 | Class IDirectInputEffect
|
|---|
| 104 | Inherits IUnknown
|
|---|
| 105 | Public
|
|---|
| 106 | 'IDirectInputEffect methods
|
|---|
| 107 | Abstract Function Initialize(hinst As HINSTANCE, dwVersion As DWord, ByRef rguid As GUID) As DWord
|
|---|
| 108 | Abstract Function GetEffectGuid(pguid As *GUID) As DWord
|
|---|
| 109 | Abstract Function GetParameters(peff As LPDIEFFECT, dwFlags As DWord) As DWord
|
|---|
| 110 | Abstract Function SetParameters(peff As LPDIEFFECT, dwFlags As DWord) As DWord
|
|---|
| 111 | Abstract Function Start(dwIterations As DWord, dwFlags As DWord) As DWord
|
|---|
| 112 | Abstract Function Stop() As DWord
|
|---|
| 113 | Abstract Function GetEffectStatus(pdwFlags As *DWord) As DWord
|
|---|
| 114 | Abstract Function Download() As DWord
|
|---|
| 115 | Abstract Function Unload() As DWord
|
|---|
| 116 | Abstract Function Escape(pesc As LPDIEFFESCAPE) As DWord
|
|---|
| 117 | End Class
|
|---|
| 118 | TypeDef LPDIRECTINPUTEFFECT = *IDirectInputEffect
|
|---|
| 119 |
|
|---|
| 120 |
|
|---|
| 121 | Type DIDEVCAPS
|
|---|
| 122 | dwSize As DWord
|
|---|
| 123 | dwFlags As DWord
|
|---|
| 124 | dwDevType As DWord
|
|---|
| 125 | dwAxes As DWord
|
|---|
| 126 | dwButtons As DWord
|
|---|
| 127 | dwPOVs As DWord
|
|---|
| 128 | dwFFSamplePeriod As DWord
|
|---|
| 129 | dwFFMinTimeResolution As DWord
|
|---|
| 130 | dwFirmwareRevision As DWord
|
|---|
| 131 | dwHardwareRevision As DWord
|
|---|
| 132 | dwFFDriverVersion As DWord
|
|---|
| 133 | End Type
|
|---|
| 134 | TypeDef LPDIDEVCAPS = *DIDEVCAPS
|
|---|
| 135 |
|
|---|
| 136 |
|
|---|
| 137 | Const DIDOI_FFACTUATOR = &H00000001
|
|---|
| 138 | Const DIDOI_FFEFFECTTRIGGER = &H00000002
|
|---|
| 139 | Const DIDOI_POLLED = &H00008000
|
|---|
| 140 | Const DIDOI_ASPECTPOSITION = &H00000100
|
|---|
| 141 | Const DIDOI_ASPECTVELOCITY = &H00000200
|
|---|
| 142 | Const DIDOI_ASPECTACCEL = &H00000300
|
|---|
| 143 | Const DIDOI_ASPECTFORCE = &H00000400
|
|---|
| 144 | Const DIDOI_ASPECTMASK = &H00000F00
|
|---|
| 145 | Const DIDOI_GUIDISUSAGE = &H00010000
|
|---|
| 146 | Type DIOBJECTDATAFORMAT
|
|---|
| 147 | pguid As *GUID
|
|---|
| 148 | dwOfs As DWord
|
|---|
| 149 | dwType As DWord
|
|---|
| 150 | dwFlags As DWord
|
|---|
| 151 | End Type
|
|---|
| 152 | TypeDef LPDIOBJECTDATAFORMAT = *DIOBJECTDATAFORMAT
|
|---|
| 153 |
|
|---|
| 154 |
|
|---|
| 155 | Const DIDFT_ALL = &H00000000
|
|---|
| 156 | Const DIDFT_RELAXIS = &H00000001
|
|---|
| 157 | Const DIDFT_ABSAXIS = &H00000002
|
|---|
| 158 | Const DIDFT_AXIS = &H00000003
|
|---|
| 159 | Const DIDFT_PSHBUTTON = &H00000004
|
|---|
| 160 | Const DIDFT_TGLBUTTON = &H00000008
|
|---|
| 161 | Const DIDFT_BUTTON = &H0000000C
|
|---|
| 162 | Const DIDFT_POV = &H00000010
|
|---|
| 163 | Const DIDFT_COLLECTION = &H00000040
|
|---|
| 164 | Const DIDFT_NODATA = &H00000080
|
|---|
| 165 | Const DIDFT_ANYINSTANCE = &H00FFFF00
|
|---|
| 166 | Const DIDFT_INSTANCEMASK = DIDFT_ANYINSTANCE
|
|---|
| 167 | Const DIDFT_FFACTUATOR = &H01000000
|
|---|
| 168 | Const DIDFT_FFEFFECTTRIGGER = &H02000000
|
|---|
| 169 | Const DIDFT_OUTPUT = &H10000000
|
|---|
| 170 | Const DIDFT_VENDORDEFINED = &H04000000
|
|---|
| 171 | Const DIDFT_ALIAS = &H08000000
|
|---|
| 172 | Const DIDFT_OPTIONAL = &H80000000
|
|---|
| 173 | Const DIDFT_NOCOLLECTION = &H00FFFF00
|
|---|
| 174 | Type DIDATAFORMAT
|
|---|
| 175 | dwSize As DWord
|
|---|
| 176 | dwObjSize As DWord
|
|---|
| 177 | dwFlags As DWord
|
|---|
| 178 | dwDataSize As DWord
|
|---|
| 179 | dwNumObjs As DWord
|
|---|
| 180 | rgodf As LPDIOBJECTDATAFORMAT
|
|---|
| 181 | End Type
|
|---|
| 182 | TypeDef LPDIDATAFORMAT = *DIDATAFORMAT
|
|---|
| 183 |
|
|---|
| 184 | Const DIDF_ABSAXIS = &H00000001
|
|---|
| 185 | Const DIDF_RELAXIS = &H00000002
|
|---|
| 186 |
|
|---|
| 187 |
|
|---|
| 188 | Type DIACTION
|
|---|
| 189 | uAppData As DWord
|
|---|
| 190 | dwSemantic As DWord
|
|---|
| 191 | dwFlags As DWord
|
|---|
| 192 | lptszActionName As *Char
|
|---|
| 193 | guidInstance As GUID
|
|---|
| 194 | dwObjID As DWord
|
|---|
| 195 | dwHow As DWord
|
|---|
| 196 | End Type
|
|---|
| 197 | TypeDef LPDIACTION = *DIACTION
|
|---|
| 198 |
|
|---|
| 199 |
|
|---|
| 200 | Type DIACTIONFORMAT
|
|---|
| 201 | dwSize As DWord
|
|---|
| 202 | dwActionSize As DWord
|
|---|
| 203 | dwDataSize As DWord
|
|---|
| 204 | dwNumActions As DWord
|
|---|
| 205 | rgoAction As LPDIACTION
|
|---|
| 206 | guidActionMap As GUID
|
|---|
| 207 | dwGenre As DWord
|
|---|
| 208 | dwBufferSize As DWord
|
|---|
| 209 | lAxisMin As Long
|
|---|
| 210 | lAxisMax As Long
|
|---|
| 211 | hInstString As HINSTANCE
|
|---|
| 212 | ftTimeStamp As FILETIME
|
|---|
| 213 | dwCRC As DWord
|
|---|
| 214 | tszActionMap[MAX_PATH-1] As Char
|
|---|
| 215 | End Type
|
|---|
| 216 | TypeDef LPDIACTIONFORMAT = *DIACTIONFORMAT
|
|---|
| 217 |
|
|---|
| 218 |
|
|---|
| 219 | Type DICOLORSET
|
|---|
| 220 | dwSize As DWord
|
|---|
| 221 | cTextFore As D3DCOLOR
|
|---|
| 222 | cTextHighlight As D3DCOLOR
|
|---|
| 223 | cCalloutLine As D3DCOLOR
|
|---|
| 224 | cCalloutHighlight As D3DCOLOR
|
|---|
| 225 | cBorder As D3DCOLOR
|
|---|
| 226 | cControlFill As D3DCOLOR
|
|---|
| 227 | cHighlightFill As D3DCOLOR
|
|---|
| 228 | cAreaFill As D3DCOLOR
|
|---|
| 229 | End Type
|
|---|
| 230 |
|
|---|
| 231 |
|
|---|
| 232 | Type DICONFIGUREDEVICESPARAMS
|
|---|
| 233 | dwSize As DWord
|
|---|
| 234 | dwcUsers As DWord
|
|---|
| 235 | lptszUserNames As *Char
|
|---|
| 236 | dwcFormats As DWord
|
|---|
| 237 | lprgFormats As LPDIACTIONFORMAT
|
|---|
| 238 | hwnd As HWND
|
|---|
| 239 | dics As DICOLORSET
|
|---|
| 240 | lpUnkDDSTarget As *IUnknown
|
|---|
| 241 | End Type
|
|---|
| 242 | TypeDef LPDICONFIGUREDEVICESPARAMS = *DICONFIGUREDEVICESPARAMS
|
|---|
| 243 |
|
|---|
| 244 |
|
|---|
| 245 | Type DIDEVICEIMAGEINFO
|
|---|
| 246 | tszImagePath[MAX_PATH-1] As Char
|
|---|
| 247 | dwFlags As DWord
|
|---|
| 248 | dwViewID As DWord
|
|---|
| 249 | rcOverlay As RECT
|
|---|
| 250 | dwObjID As DWord
|
|---|
| 251 | dwcValidPts As DWord
|
|---|
| 252 | rgptCalloutLine[5-1] As POINTAPI
|
|---|
| 253 | rcCalloutRect As RECT
|
|---|
| 254 | dwTextAlign As DWord
|
|---|
| 255 | End Type
|
|---|
| 256 | TypeDef LPDIDEVICEIMAGEINFO = *DIDEVICEIMAGEINFO
|
|---|
| 257 |
|
|---|
| 258 |
|
|---|
| 259 | Type DIDEVICEIMAGEINFOHEADER
|
|---|
| 260 | dwSize As DWord
|
|---|
| 261 | dwSizeImageInfo As DWord
|
|---|
| 262 | dwcViews As DWord
|
|---|
| 263 | dwcButtons As DWord
|
|---|
| 264 | dwcAxes As DWord
|
|---|
| 265 | dwcPOVs As DWord
|
|---|
| 266 | dwBufferSize As DWord
|
|---|
| 267 | dwBufferUsed As DWord
|
|---|
| 268 | lprgImageInfoArray As LPDIDEVICEIMAGEINFO
|
|---|
| 269 | End Type
|
|---|
| 270 | TypeDef LPDIDEVICEIMAGEINFOHEADER = *DIDEVICEIMAGEINFOHEADER
|
|---|
| 271 |
|
|---|
| 272 |
|
|---|
| 273 | Type DIDEVICEOBJECTINSTANCE
|
|---|
| 274 | dwSize As DWord
|
|---|
| 275 | guidType As GUID
|
|---|
| 276 | dwOfs As DWord
|
|---|
| 277 | dwType As DWord
|
|---|
| 278 | dwFlags As DWord
|
|---|
| 279 | tszName[MAX_PATH-1] As Char
|
|---|
| 280 | dwFFMaxForce As DWord
|
|---|
| 281 | dwFFForceResolution As DWord
|
|---|
| 282 | wCollectionNumber As Word
|
|---|
| 283 | wDesignatorIndex As Word
|
|---|
| 284 | wUsagePage As Word
|
|---|
| 285 | wUsage As Word
|
|---|
| 286 | dwDimension As DWord
|
|---|
| 287 | wExponent As Word
|
|---|
| 288 | wReportId As Word
|
|---|
| 289 | End Type
|
|---|
| 290 | TypeDef LPDIDEVICEOBJECTINSTANCE = *DIDEVICEOBJECTINSTANCE
|
|---|
| 291 |
|
|---|
| 292 |
|
|---|
| 293 | Type DIPROPHEADER
|
|---|
| 294 | dwSize As DWord
|
|---|
| 295 | dwHeaderSize As DWord
|
|---|
| 296 | dwObj As DWord
|
|---|
| 297 | dwHow As DWord
|
|---|
| 298 | End Type
|
|---|
| 299 | TypeDef LPDIPROPHEADER = *DIPROPHEADER
|
|---|
| 300 |
|
|---|
| 301 |
|
|---|
| 302 | Type DIDEVICEOBJECTDATA
|
|---|
| 303 | dwOfs As DWord
|
|---|
| 304 | dwData As DWord
|
|---|
| 305 | dwTimeStamp As DWord
|
|---|
| 306 | dwSequence As DWord
|
|---|
| 307 | uAppData As DWord
|
|---|
| 308 | End Type
|
|---|
| 309 | TypeDef LPDIDEVICEOBJECTDATA = *DIDEVICEOBJECTDATA
|
|---|
| 310 |
|
|---|
| 311 |
|
|---|
| 312 | Const DISCL_EXCLUSIVE = &H00000001
|
|---|
| 313 | Const DISCL_NONEXCLUSIVE = &H00000002
|
|---|
| 314 | Const DISCL_FOREGROUND = &H00000004
|
|---|
| 315 | Const DISCL_BACKGROUND = &H00000008
|
|---|
| 316 | Const DISCL_NOWINKEY = &H00000010
|
|---|
| 317 |
|
|---|
| 318 |
|
|---|
| 319 | Type DIDEVICEINSTANCE
|
|---|
| 320 | dwSize As DWord
|
|---|
| 321 | guidInstance As GUID
|
|---|
| 322 | guidProduct As GUID
|
|---|
| 323 | dwDevType As DWord
|
|---|
| 324 | tszInstanceName[MAX_PATH-1] As Char
|
|---|
| 325 | tszProductName[MAX_PATH-1] As Char
|
|---|
| 326 | guidFFDriver As GUID
|
|---|
| 327 | wUsagePage As Word
|
|---|
| 328 | wUsage As Word
|
|---|
| 329 | End Type
|
|---|
| 330 | TypeDef LPDIDEVICEINSTANCE = *DIDEVICEINSTANCE
|
|---|
| 331 |
|
|---|
| 332 |
|
|---|
| 333 | Type DIEFFECTINFO
|
|---|
| 334 | dwSize As DWord
|
|---|
| 335 | guid As GUID
|
|---|
| 336 | dwEffType As DWord
|
|---|
| 337 | dwStaticParams As DWord
|
|---|
| 338 | dwDynamicParams As DWord
|
|---|
| 339 | tszName[MAX_PATH-1] As Char
|
|---|
| 340 | End Type
|
|---|
| 341 | TypeDef LPDIEFFECTINFO = *DIEFFECTINFO
|
|---|
| 342 |
|
|---|
| 343 |
|
|---|
| 344 | Class IDirectInputDevice8
|
|---|
| 345 | Inherits IUnknown
|
|---|
| 346 | Public
|
|---|
| 347 | 'IDirectInputDevice8 methods
|
|---|
| 348 | Abstract Function GetCapabilities(lpDIDevCaps As LPDIDEVCAPS) As DWord
|
|---|
| 349 | Abstract Function EnumObjects(lpCallback As VoidPtr, pvRef As VoidPtr, dwFlags As DWord) As DWord
|
|---|
| 350 | Abstract Function GetProperty(ByRef rguidProp As GUID, pdiph As LPDIPROPHEADER) As DWord
|
|---|
| 351 | Abstract Function SetProperty(ByRef rguidProp As GUID, pdiph As LPDIPROPHEADER) As DWord
|
|---|
| 352 | Abstract Function Acquire() As DWord
|
|---|
| 353 | Abstract Function Unacquire() As DWord
|
|---|
| 354 | Abstract Function GetDeviceState(cbData As DWord, lpvData As VoidPtr) As DWord
|
|---|
| 355 | Abstract Function GetDeviceData(cbObjectData As DWord, rgdod As LPDIDEVICEOBJECTDATA, pdwInOut As *DWord, dwFlags As DWord) As DWord
|
|---|
| 356 | Abstract Function SetDataFormat(lpdf As LPDIDATAFORMAT) As DWord
|
|---|
| 357 | Abstract Function SetEventNotification(hEvent As HANDLE) As DWord
|
|---|
| 358 | Abstract Function SetCooperativeLevel(hwnd As HWND, dwFlags As DWord) As DWord
|
|---|
| 359 | Abstract Function GetObjectInfo(pdidoi As LPDIDEVICEOBJECTINSTANCE, dwObj As DWord, dwHow As DWord) As DWord
|
|---|
| 360 | Abstract Function GetDeviceInfo(pdidi As LPDIDEVICEINSTANCE) As DWord
|
|---|
| 361 | Abstract Function RunControlPanel(hwndOwner As HWND, dwFlags As DWord) As DWord
|
|---|
| 362 | Abstract Function Initialize(hinst As HINSTANCE, dwVersion As DWord, ByRef rguid As GUID) As DWord
|
|---|
| 363 | Abstract Function CreateEffect(ByRef rguid As GUID, lpeff As LPDIEFFECT, ppdeff As *LPDIRECTINPUTEFFECT, punkOuter As LPUNKNOWN) As DWord
|
|---|
| 364 | Abstract Function EnumEffects(lpCallback As VoidPtr, pvRef As VoidPtr, dwEffType As DWord) As DWord
|
|---|
| 365 | Abstract Function GetEffectInfo(pdei As LPDIEFFECTINFO, ByRef rguid As GUID) As DWord
|
|---|
| 366 | Abstract Function GetForceFeedbackState(pdwOut As *DWord) As DWord
|
|---|
| 367 | Abstract Function SendForceFeedbackCommand(dwFlags As DWord) As DWord
|
|---|
| 368 | Abstract Function EnumCreatedEffectObjects(lpCallback As VoidPtr, pvRef As VoidPtr, fl As DWord) As DWord
|
|---|
| 369 | Abstract Function Escape(pesc As LPDIEFFESCAPE) As DWord
|
|---|
| 370 | Abstract Function Poll() As DWord
|
|---|
| 371 | Abstract Function SendDeviceData(cbObjectData As DWord, rgdod As LPDIDEVICEOBJECTDATA, pdwInOut As *DWord, fl As DWord) As DWord
|
|---|
| 372 | Abstract Function EnumEffectsInFile(lpszFileName As *Char, pec As VoidPtr, pvRef As VoidPtr, dwFlags As DWord) As DWord
|
|---|
| 373 | Abstract Function WriteEffectToFile(lpszFileName As *Char, dwEntries As DWord, rgDiFileEft As LPDIFILEEFFECT, dwFlags As DWord) As DWord
|
|---|
| 374 | Abstract Function BuildActionMap(lpdiaf As LPDIACTIONFORMAT, lpszUserName As *Char, dwFlags As DWord) As DWord
|
|---|
| 375 | Abstract Function SetActionMap(lpdiActionFormat As LPDIACTIONFORMAT, lptszUserName As *Char, dwFlags As DWord) As DWord
|
|---|
| 376 | Abstract Function GetImageInfo(lpdiDevImageInfoHeader As LPDIDEVICEIMAGEINFOHEADER) As DWord
|
|---|
| 377 | End Class
|
|---|
| 378 | TypeDef LPDIRECTINPUTDEVICE8 = *IDirectInputDevice8
|
|---|
| 379 |
|
|---|
| 380 |
|
|---|
| 381 | Class IDirectInput8
|
|---|
| 382 | Inherits IUnknown
|
|---|
| 383 | Public
|
|---|
| 384 | 'IDirectInput8 methods
|
|---|
| 385 | Abstract Function CreateDevice(ByRef rguid As GUID, lplpDirectInputDevice As *LPDIRECTINPUTDEVICE8, pUnkOuter As LPUNKNOWN) As DWord
|
|---|
| 386 | Abstract Function EnumDevices(dwDevType As DWord, lpCallback As VoidPtr, pvRef As VoidPtr, dwFlags As DWord) As DWord
|
|---|
| 387 | Abstract Function GetDeviceStatus(ByRef rguidInstance As GUID) As DWord
|
|---|
| 388 | Abstract Function RunControlPanel(hwndOwner As HWND, dwFlags As DWord) As DWord
|
|---|
| 389 | Abstract Function Initialize(hinst As HINSTANCE, dwVersion As DWord) As DWord
|
|---|
| 390 | Abstract Function FindDevice(ByRef rguidClass As GUID, ptszName As *Char, pguidInstance As *GUID) As DWord
|
|---|
| 391 | Abstract Function EnumDevicesBySemantics(ptszUserName As *Char, lpdiActionFormat As LPDIACTIONFORMAT, lpCallback As VoidPtr, pvRef As VoidPtr, dwFlags As DWord) As DWord
|
|---|
| 392 | Abstract Function ConfigureDevices(lpdiCallback As VoidPtr, lpdiCDParams As LPDICONFIGUREDEVICESPARAMS, dwFlags As DWord, pvRefData As VoidPtr) As DWord
|
|---|
| 393 | End Class
|
|---|
| 394 | TypeDef LPDIRECTINPUT8 = *IDirectInput8
|
|---|
| 395 |
|
|---|
| 396 |
|
|---|
| 397 | '---------------------------------
|
|---|
| 398 | ' DirectInput keyboard scan codes
|
|---|
| 399 | '---------------------------------
|
|---|
| 400 |
|
|---|
| 401 | Const DIK_ESCAPE = &H01
|
|---|
| 402 | Const DIK_1 = &H02
|
|---|
| 403 | Const DIK_2 = &H03
|
|---|
| 404 | Const DIK_3 = &H04
|
|---|
| 405 | Const DIK_4 = &H05
|
|---|
| 406 | Const DIK_5 = &H06
|
|---|
| 407 | Const DIK_6 = &H07
|
|---|
| 408 | Const DIK_7 = &H08
|
|---|
| 409 | Const DIK_8 = &H09
|
|---|
| 410 | Const DIK_9 = &H0A
|
|---|
| 411 | Const DIK_0 = &H0B
|
|---|
| 412 | Const DIK_MINUS = &H0C '- on main keyboard
|
|---|
| 413 | Const DIK_EQUALS = &H0D
|
|---|
| 414 | Const DIK_BACK = &H0E 'backspace
|
|---|
| 415 | Const DIK_TAB = &H0F
|
|---|
| 416 | Const DIK_Q = &H10
|
|---|
| 417 | Const DIK_W = &H11
|
|---|
| 418 | Const DIK_E = &H12
|
|---|
| 419 | Const DIK_R = &H13
|
|---|
| 420 | Const DIK_T = &H14
|
|---|
| 421 | Const DIK_Y = &H15
|
|---|
| 422 | Const DIK_U = &H16
|
|---|
| 423 | Const DIK_I = &H17
|
|---|
| 424 | Const DIK_O = &H18
|
|---|
| 425 | Const DIK_P = &H19
|
|---|
| 426 | Const DIK_LBRACKET = &H1A
|
|---|
| 427 | Const DIK_RBRACKET = &H1B
|
|---|
| 428 | Const DIK_RETURN = &H1C 'Enter on main keyboard
|
|---|
| 429 | Const DIK_LCONTROL = &H1D
|
|---|
| 430 | Const DIK_A = &H1E
|
|---|
| 431 | Const DIK_S = &H1F
|
|---|
| 432 | Const DIK_D = &H20
|
|---|
| 433 | Const DIK_F = &H21
|
|---|
| 434 | Const DIK_G = &H22
|
|---|
| 435 | Const DIK_H = &H23
|
|---|
| 436 | Const DIK_J = &H24
|
|---|
| 437 | Const DIK_K = &H25
|
|---|
| 438 | Const DIK_L = &H26
|
|---|
| 439 | Const DIK_SEMICOLON = &H27
|
|---|
| 440 | Const DIK_APOSTROPHE = &H28
|
|---|
| 441 | Const DIK_GRAVE = &H29 'accent grave
|
|---|
| 442 | Const DIK_LSHIFT = &H2A
|
|---|
| 443 | Const DIK_BACKSLASH = &H2B
|
|---|
| 444 | Const DIK_Z = &H2C
|
|---|
| 445 | Const DIK_X = &H2D
|
|---|
| 446 | Const DIK_C = &H2E
|
|---|
| 447 | Const DIK_V = &H2F
|
|---|
| 448 | Const DIK_B = &H30
|
|---|
| 449 | Const DIK_N = &H31
|
|---|
| 450 | Const DIK_M = &H32
|
|---|
| 451 | Const DIK_COMMA = &H33
|
|---|
| 452 | Const DIK_PERIOD = &H34 '. on main keyboard
|
|---|
| 453 | Const DIK_SLASH = &H35 '/ on main keyboard
|
|---|
| 454 | Const DIK_RSHIFT = &H36
|
|---|
| 455 | Const DIK_MULTIPLY = &H37 '* on numeric keypad
|
|---|
| 456 | Const DIK_LMENU = &H38 'left Alt
|
|---|
| 457 | Const DIK_SPACE = &H39
|
|---|
| 458 | Const DIK_CAPITAL = &H3A
|
|---|
| 459 | Const DIK_F1 = &H3B
|
|---|
| 460 | Const DIK_F2 = &H3C
|
|---|
| 461 | Const DIK_F3 = &H3D
|
|---|
| 462 | Const DIK_F4 = &H3E
|
|---|
| 463 | Const DIK_F5 = &H3F
|
|---|
| 464 | Const DIK_F6 = &H40
|
|---|
| 465 | Const DIK_F7 = &H41
|
|---|
| 466 | Const DIK_F8 = &H42
|
|---|
| 467 | Const DIK_F9 = &H43
|
|---|
| 468 | Const DIK_F10 = &H44
|
|---|
| 469 | Const DIK_NUMLOCK = &H45
|
|---|
| 470 | Const DIK_SCROLL = &H46 'Scroll Lock
|
|---|
| 471 | Const DIK_NUMPAD7 = &H47
|
|---|
| 472 | Const DIK_NUMPAD8 = &H48
|
|---|
| 473 | Const DIK_NUMPAD9 = &H49
|
|---|
| 474 | Const DIK_SUBTRACT = &H4A '- on numeric keypad
|
|---|
| 475 | Const DIK_NUMPAD4 = &H4B
|
|---|
| 476 | Const DIK_NUMPAD5 = &H4C
|
|---|
| 477 | Const DIK_NUMPAD6 = &H4D
|
|---|
| 478 | Const DIK_ADD = &H4E '+ on numeric keypad
|
|---|
| 479 | Const DIK_NUMPAD1 = &H4F
|
|---|
| 480 | Const DIK_NUMPAD2 = &H50
|
|---|
| 481 | Const DIK_NUMPAD3 = &H51
|
|---|
| 482 | Const DIK_NUMPAD0 = &H52
|
|---|
| 483 | Const DIK_DECIMAL = &H53 '. on numeric keypad
|
|---|
| 484 | Const DIK_OEM_102 = &H56 '<> or \| on RT 102-key keyboard (Non-U.S.)
|
|---|
| 485 | Const DIK_F11 = &H57
|
|---|
| 486 | Const DIK_F12 = &H58
|
|---|
| 487 | Const DIK_F13 = &H64 ' (NEC PC98)
|
|---|
| 488 | Const DIK_F14 = &H65 ' (NEC PC98)
|
|---|
| 489 | Const DIK_F15 = &H66 ' (NEC PC98)
|
|---|
| 490 | Const DIK_KANA = &H70 '(Japanese keyboard)
|
|---|
| 491 | Const DIK_ABNT_C1 = &H73 '/? on Brazilian keyboard
|
|---|
| 492 | Const DIK_CONVERT = &H79 '(Japanese keyboard)
|
|---|
| 493 | Const DIK_NOCONVERT = &H7B '(Japanese keyboard)
|
|---|
| 494 | Const DIK_YEN = &H7D '(Japanese keyboard)
|
|---|
| 495 | Const DIK_ABNT_C2 = &H7E 'Numpad . on Brazilian keyboard
|
|---|
| 496 | Const DIK_NUMPADEQUALS = &H8D '= on numeric keypad (NEC PC98)
|
|---|
| 497 | Const DIK_PREVTRACK = &H90 'Previous Track (DIK_CIRCUMFLEX on Japanese keyboard)
|
|---|
| 498 | Const DIK_AT = &H91 ' (NEC PC98)
|
|---|
| 499 | Const DIK_COLON = &H92 ' (NEC PC98)
|
|---|
| 500 | Const DIK_UNDERLINE = &H93 ' (NEC PC98)
|
|---|
| 501 | Const DIK_KANJI = &H94 '(Japanese keyboard)
|
|---|
| 502 | Const DIK_STOP = &H95 ' (NEC PC98)
|
|---|
| 503 | Const DIK_AX = &H96 ' (Japan AX)
|
|---|
| 504 | Const DIK_UNLABELED = &H97 ' (J3100)
|
|---|
| 505 | Const DIK_NEXTTRACK = &H99 'Next Track
|
|---|
| 506 | Const DIK_NUMPADENTER = &H9C 'Enter on numeric keypad
|
|---|
| 507 | Const DIK_RCONTROL = &H9D
|
|---|
| 508 | Const DIK_MUTE = &HA0 'Mute
|
|---|
| 509 | Const DIK_CALCULATOR = &HA1 'Calculator
|
|---|
| 510 | Const DIK_PLAYPAUSE = &HA2 'Play / Pause
|
|---|
| 511 | Const DIK_MEDIASTOP = &HA4 'Media Stop
|
|---|
| 512 | Const DIK_VOLUMEDOWN = &HAE 'Volume -
|
|---|
| 513 | Const DIK_VOLUMEUP = &HB0 'Volume +
|
|---|
| 514 | Const DIK_WEBHOME = &HB2 'Web home
|
|---|
| 515 | Const DIK_NUMPADCOMMA = &HB3 ', on numeric keypad (NEC PC98)
|
|---|
| 516 | Const DIK_DIVIDE = &HB5 '/ on numeric keypad
|
|---|
| 517 | Const DIK_SYSRQ = &HB7
|
|---|
| 518 | Const DIK_RMENU = &HB8 'right Alt
|
|---|
| 519 | Const DIK_PAUSE = &HC5 'Pause
|
|---|
| 520 | Const DIK_HOME = &HC7 'Home on arrow keypad
|
|---|
| 521 | Const DIK_UP = &HC8 'UpArrow on arrow keypad
|
|---|
| 522 | Const DIK_PRIOR = &HC9 'PgUp on arrow keypad
|
|---|
| 523 | Const DIK_LEFT = &HCB 'LeftArrow on arrow keypad
|
|---|
| 524 | Const DIK_RIGHT = &HCD 'RightArrow on arrow keypad
|
|---|
| 525 | Const DIK_END = &HCF 'End on arrow keypad
|
|---|
| 526 | Const DIK_DOWN = &HD0 'DownArrow on arrow keypad
|
|---|
| 527 | Const DIK_NEXT = &HD1 'PgDn on arrow keypad
|
|---|
| 528 | Const DIK_INSERT = &HD2 'Insert on arrow keypad
|
|---|
| 529 | Const DIK_DELETE = &HD3 'Delete on arrow keypad
|
|---|
| 530 | Const DIK_LWIN = &HDB 'Left Windows key
|
|---|
| 531 | Const DIK_RWIN = &HDC 'Right Windows key
|
|---|
| 532 | Const DIK_APPS = &HDD 'AppMenu key
|
|---|
| 533 | Const DIK_POWER = &HDE 'System Power
|
|---|
| 534 | Const DIK_SLEEP = &HDF 'System Sleep
|
|---|
| 535 | Const DIK_WAKE = &HE3 'System Wake
|
|---|
| 536 | Const DIK_WEBSEARCH = &HE5 'Web Search
|
|---|
| 537 | Const DIK_WEBFAVORITES = &HE6 'Web Favorites
|
|---|
| 538 | Const DIK_WEBREFRESH = &HE7 'Web Refresh
|
|---|
| 539 | Const DIK_WEBSTOP = &HE8 'Web Stop
|
|---|
| 540 | Const DIK_WEBFORWARD = &HE9 'Web Forward
|
|---|
| 541 | Const DIK_WEBBACK = &HEA 'Web Back
|
|---|
| 542 | Const DIK_MYCOMPUTER = &HEB 'My Computer
|
|---|
| 543 | Const DIK_MAIL = &HEC 'Mail
|
|---|
| 544 | Const DIK_MEDIASELECT = &HED 'Media Select
|
|---|
| 545 |
|
|---|
| 546 | ' Alternate names for keys, to facilitate transition from DOS.
|
|---|
| 547 | Const DIK_BACKSPACE = DIK_BACK 'backspace
|
|---|
| 548 | Const DIK_NUMPADSTAR = DIK_MULTIPLY '* on numeric keypad
|
|---|
| 549 | Const DIK_LALT = DIK_LMENU 'left Alt
|
|---|
| 550 | Const DIK_CAPSLOCK = DIK_CAPITAL 'CapsLock
|
|---|
| 551 | Const DIK_NUMPADMINUS = DIK_SUBTRACT '- on numeric keypad
|
|---|
| 552 | Const DIK_NUMPADPLUS = DIK_ADD '+ on numeric keypad
|
|---|
| 553 | Const DIK_NUMPADPERIOD = DIK_DECIMAL '. on numeric keypad
|
|---|
| 554 | Const DIK_NUMPADSLASH = DIK_DIVIDE '/ on numeric keypad
|
|---|
| 555 | Const DIK_RALT = DIK_RMENU 'right Alt
|
|---|
| 556 | Const DIK_UPARROW = DIK_UP 'UpArrow on arrow keypad
|
|---|
| 557 | Const DIK_PGUP = DIK_PRIOR 'PgUp on arrow keypad
|
|---|
| 558 | Const DIK_LEFTARROW = DIK_LEFT 'LeftArrow on arrow keypad
|
|---|
| 559 | Const DIK_RIGHTARROW = DIK_RIGHT 'RightArrow on arrow keypad
|
|---|
| 560 | Const DIK_DOWNARROW = DIK_DOWN 'DownArrow on arrow keypad
|
|---|
| 561 | Const DIK_PGDN = DIK_NEXT 'PgDn on arrow keypad
|
|---|
| 562 |
|
|---|
| 563 | ' Alternate names for keys originally not used on US keyboards.
|
|---|
| 564 | Const DIK_CIRCUMFLEX = DIK_PREVTRACK 'Japanese keyboard
|
|---|
| 565 |
|
|---|
| 566 |
|
|---|
| 567 | '-----------------------
|
|---|
| 568 | ' Mouse
|
|---|
| 569 | '-----------------------
|
|---|
| 570 |
|
|---|
| 571 | Type DIMOUSESTATE
|
|---|
| 572 | lX As Long
|
|---|
| 573 | lY As Long
|
|---|
| 574 | lZ As Long
|
|---|
| 575 | rgbButtons[3] As Byte
|
|---|
| 576 | End Type
|
|---|
| 577 |
|
|---|
| 578 | Type DIMOUSESTATE2
|
|---|
| 579 | lX As Long
|
|---|
| 580 | lY As Long
|
|---|
| 581 | lZ As Long
|
|---|
| 582 | rgbButtons[7] As Byte
|
|---|
| 583 | End Type
|
|---|
| 584 |
|
|---|
| 585 |
|
|---|
| 586 | Declare Function DirectInput8Create Lib "dinput8" (hinst As HINSTANCE, dwVersion As DWord, ByRef riidltf As GUID, ppvOut As *DWord, punkOuter As *IUnknown) As DWord
|
|---|
| 587 |
|
|---|
| 588 |
|
|---|
| 589 | '-------------------
|
|---|
| 590 | ' Device Data Type
|
|---|
| 591 | '-------------------
|
|---|
| 592 |
|
|---|
| 593 | 'c_dfDIKeyboard
|
|---|
| 594 | Sub _System_DirectInput_Keyboard_SetDataType(p As *DIOBJECTDATAFORMAT)
|
|---|
| 595 | Dim i As Long
|
|---|
| 596 | For i=0 To 255
|
|---|
| 597 | p[i].pguid=VarPtr(GUID_Key)
|
|---|
| 598 | p[i].dwOfs=i
|
|---|
| 599 | p[i].dwType=DIDFT_BUTTON or DIDFT_OPTIONAL or (i<<8)
|
|---|
| 600 | p[i].dwFlags=0
|
|---|
| 601 | Next
|
|---|
| 602 | End Sub
|
|---|
| 603 | Dim _System_dfDIKeyboardObjectDataFormat[255] As DIOBJECTDATAFORMAT
|
|---|
| 604 | _System_DirectInput_Keyboard_SetDataType(_System_dfDIKeyboardObjectDataFormat)
|
|---|
| 605 | Dim c_dfDIKeyboard=[24,16,DIDF_RELAXIS,256,256,0] As DIDATAFORMAT
|
|---|
| 606 | c_dfDIKeyboard.rgodf=_System_dfDIKeyboardObjectDataFormat
|
|---|
| 607 |
|
|---|
| 608 | 'c_dfDIMouse
|
|---|
| 609 | Dim _System_dfDIMouseObjectDataFormat[6]=[
|
|---|
| 610 | [0,&H00,DIDFT_ANYINSTANCE or DIDFT_AXIS,0],
|
|---|
| 611 | [0,&H04,DIDFT_ANYINSTANCE or DIDFT_AXIS,0],
|
|---|
| 612 | [0,&H08,DIDFT_ANYINSTANCE or DIDFT_AXIS or DIDFT_OPTIONAL,0],
|
|---|
| 613 | [0,&H0C,DIDFT_ANYINSTANCE or DIDFT_BUTTON,0],
|
|---|
| 614 | [0,&H0D,DIDFT_ANYINSTANCE or DIDFT_BUTTON,0],
|
|---|
| 615 | [0,&H0E,DIDFT_ANYINSTANCE or DIDFT_BUTTON or DIDFT_OPTIONAL,0],
|
|---|
| 616 | [0,&H0F,DIDFT_ANYINSTANCE or DIDFT_BUTTON or DIDFT_OPTIONAL,0]
|
|---|
| 617 | ] As DIOBJECTDATAFORMAT
|
|---|
| 618 | _System_dfDIMouseObjectDataFormat[0].pguid=VarPtr(GUID_XAxis)
|
|---|
| 619 | _System_dfDIMouseObjectDataFormat[1].pguid=VarPtr(GUID_YAxis)
|
|---|
| 620 | _System_dfDIMouseObjectDataFormat[2].pguid=VarPtr(GUID_ZAxis)
|
|---|
| 621 | Dim c_dfDIMouse=[24,16,DIDF_RELAXIS,16,7,0] As DIDATAFORMAT
|
|---|
| 622 | c_dfDIMouse.rgodf=_System_dfDIMouseObjectDataFormat
|
|---|
| 623 |
|
|---|
| 624 | 'c_dfDIMouse2
|
|---|
| 625 | Dim _System_dfDIMouse2ObjectDataFormat[10]=[
|
|---|
| 626 | [0,&H00,DIDFT_ANYINSTANCE or DIDFT_AXIS,0],
|
|---|
| 627 | [0,&H04,DIDFT_ANYINSTANCE or DIDFT_AXIS,0],
|
|---|
| 628 | [0,&H08,DIDFT_ANYINSTANCE or DIDFT_AXIS or DIDFT_OPTIONAL,0],
|
|---|
| 629 | [0,&H0C,DIDFT_ANYINSTANCE or DIDFT_BUTTON,0],
|
|---|
| 630 | [0,&H0D,DIDFT_ANYINSTANCE or DIDFT_BUTTON,0],
|
|---|
| 631 | [0,&H0E,DIDFT_ANYINSTANCE or DIDFT_BUTTON or DIDFT_OPTIONAL,0],
|
|---|
| 632 | [0,&H0F,DIDFT_ANYINSTANCE or DIDFT_BUTTON or DIDFT_OPTIONAL,0],
|
|---|
| 633 | [0,&H10,DIDFT_ANYINSTANCE or DIDFT_BUTTON or DIDFT_OPTIONAL,0],
|
|---|
| 634 | [0,&H11,DIDFT_ANYINSTANCE or DIDFT_BUTTON or DIDFT_OPTIONAL,0],
|
|---|
| 635 | [0,&H12,DIDFT_ANYINSTANCE or DIDFT_BUTTON or DIDFT_OPTIONAL,0],
|
|---|
| 636 | [0,&H13,DIDFT_ANYINSTANCE or DIDFT_BUTTON or DIDFT_OPTIONAL,0]
|
|---|
| 637 | ] As DIOBJECTDATAFORMAT
|
|---|
| 638 | _System_dfDIMouse2ObjectDataFormat[0].pguid=VarPtr(GUID_XAxis)
|
|---|
| 639 | _System_dfDIMouse2ObjectDataFormat[1].pguid=VarPtr(GUID_YAxis)
|
|---|
| 640 | _System_dfDIMouse2ObjectDataFormat[2].pguid=VarPtr(GUID_ZAxis)
|
|---|
| 641 | Dim c_dfDIMouse2=[24,16,DIDF_RELAXIS,20,11,0] As DIDATAFORMAT
|
|---|
| 642 | c_dfDIMouse2.rgodf=_System_dfDIMouse2ObjectDataFormat
|
|---|
| 643 |
|
|---|
| 644 | 'c_dfDIJoystick
|
|---|
| 645 | Sub _System_DirectInput_Joystick_SetDataType(p As *DIOBJECTDATAFORMAT)
|
|---|
| 646 | Dim i As Long
|
|---|
| 647 | For i=12 To &H2B
|
|---|
| 648 | p[i].pguid=0
|
|---|
| 649 | p[i].dwOfs=&H30+i-12
|
|---|
| 650 | p[i].dwType=DIDFT_ANYINSTANCE or DIDFT_BUTTON or DIDFT_OPTIONAL or (i<<8)
|
|---|
| 651 | p[i].dwFlags=0
|
|---|
| 652 | Next
|
|---|
| 653 | End Sub
|
|---|
| 654 | Dim _System_dfDIJoystickObjectDataFormat[&H2B]=[
|
|---|
| 655 | [0,&H00,DIDFT_ANYINSTANCE or DIDFT_AXIS or DIDFT_OPTIONAL,DIDOI_ASPECTPOSITION],
|
|---|
| 656 | [0,&H04,DIDFT_ANYINSTANCE or DIDFT_AXIS or DIDFT_OPTIONAL,DIDOI_ASPECTPOSITION],
|
|---|
| 657 | [0,&H08,DIDFT_ANYINSTANCE or DIDFT_AXIS or DIDFT_OPTIONAL,DIDOI_ASPECTPOSITION],
|
|---|
| 658 | [0,&H0C,DIDFT_ANYINSTANCE or DIDFT_AXIS or DIDFT_OPTIONAL,DIDOI_ASPECTPOSITION],
|
|---|
| 659 | [0,&H10,DIDFT_ANYINSTANCE or DIDFT_AXIS or DIDFT_OPTIONAL,DIDOI_ASPECTPOSITION],
|
|---|
| 660 | [0,&H14,DIDFT_ANYINSTANCE or DIDFT_AXIS or DIDFT_OPTIONAL,DIDOI_ASPECTPOSITION],
|
|---|
| 661 | [0,&H18,DIDFT_ANYINSTANCE or DIDFT_AXIS or DIDFT_OPTIONAL,DIDOI_ASPECTPOSITION],
|
|---|
| 662 | [0,&H1C,DIDFT_ANYINSTANCE or DIDFT_AXIS or DIDFT_OPTIONAL,DIDOI_ASPECTPOSITION],
|
|---|
| 663 | [0,&H20,DIDFT_ANYINSTANCE or DIDFT_POV or DIDFT_OPTIONAL,0],
|
|---|
| 664 | [0,&H24,DIDFT_ANYINSTANCE or DIDFT_POV or DIDFT_OPTIONAL,0],
|
|---|
| 665 | [0,&H28,DIDFT_ANYINSTANCE or DIDFT_POV or DIDFT_OPTIONAL,0],
|
|---|
| 666 | [0,&H2C,DIDFT_ANYINSTANCE or DIDFT_POV or DIDFT_OPTIONAL,0]
|
|---|
| 667 | ] As DIOBJECTDATAFORMAT
|
|---|
| 668 | _System_dfDIJoystickObjectDataFormat[0].pguid=VarPtr(GUID_XAxis)
|
|---|
| 669 | _System_dfDIJoystickObjectDataFormat[1].pguid=VarPtr(GUID_YAxis)
|
|---|
| 670 | _System_dfDIJoystickObjectDataFormat[2].pguid=VarPtr(GUID_ZAxis)
|
|---|
| 671 | _System_dfDIJoystickObjectDataFormat[3].pguid=VarPtr(GUID_RxAxis)
|
|---|
| 672 | _System_dfDIJoystickObjectDataFormat[4].pguid=VarPtr(GUID_RyAxis)
|
|---|
| 673 | _System_dfDIJoystickObjectDataFormat[5].pguid=VarPtr(GUID_RzAxis)
|
|---|
| 674 | _System_dfDIJoystickObjectDataFormat[6].pguid=VarPtr(GUID_Slider)
|
|---|
| 675 | _System_dfDIJoystickObjectDataFormat[7].pguid=VarPtr(GUID_Slider)
|
|---|
| 676 | _System_dfDIJoystickObjectDataFormat[8].pguid=VarPtr(GUID_POV)
|
|---|
| 677 | _System_dfDIJoystickObjectDataFormat[9].pguid=VarPtr(GUID_POV)
|
|---|
| 678 | _System_dfDIJoystickObjectDataFormat[10].pguid=VarPtr(GUID_POV)
|
|---|
| 679 | _System_dfDIJoystickObjectDataFormat[11].pguid=VarPtr(GUID_POV)
|
|---|
| 680 | _System_DirectInput_Joystick_SetDataType(_System_dfDIJoystickObjectDataFormat)
|
|---|
| 681 | Dim c_dfDIJoystick=[24,16,DIDF_ABSAXIS,&H50,&H2C,0] As DIDATAFORMAT
|
|---|
| 682 | c_dfDIJoystick.rgodf=_System_dfDIJoystickObjectDataFormat
|
|---|
| 683 |
|
|---|
| 684 | 'c_dfDIJoystick2
|
|---|
| 685 | Sub _System_DirectInput_Joystick2_SetDataType(p As *DIOBJECTDATAFORMAT)
|
|---|
| 686 | Dim i As Long
|
|---|
| 687 | For i=12 To &H8B
|
|---|
| 688 | p[i].pguid=0
|
|---|
| 689 | p[i].dwOfs=&H30+i-12
|
|---|
| 690 | p[i].dwType=DIDFT_ANYINSTANCE or DIDFT_BUTTON or DIDFT_OPTIONAL or (i<<8)
|
|---|
| 691 | p[i].dwFlags=0
|
|---|
| 692 | Next
|
|---|
| 693 |
|
|---|
| 694 | With p[&H8C]:.pguid=VarPtr(GUID_XAxis):.dwOfs=&HB0:.dwType=DIDFT_ANYINSTANCE or DIDFT_AXIS or DIDFT_OPTIONAL:.dwFlags=DIDOI_ASPECTVELOCITY:End With
|
|---|
| 695 | With p[&H8D]:.pguid=VarPtr(GUID_YAxis):.dwOfs=&HB4:.dwType=DIDFT_ANYINSTANCE or DIDFT_AXIS or DIDFT_OPTIONAL:.dwFlags=DIDOI_ASPECTVELOCITY:End With
|
|---|
| 696 | With p[&H8E]:.pguid=VarPtr(GUID_ZAxis):.dwOfs=&HB8:.dwType=DIDFT_ANYINSTANCE or DIDFT_AXIS or DIDFT_OPTIONAL:.dwFlags=DIDOI_ASPECTVELOCITY:End With
|
|---|
| 697 | With p[&H8F]:.pguid=VarPtr(GUID_RxAxis):.dwOfs=&HBC:.dwType=DIDFT_ANYINSTANCE or DIDFT_AXIS or DIDFT_OPTIONAL:.dwFlags=DIDOI_ASPECTVELOCITY:End With
|
|---|
| 698 | With p[&H90]:.pguid=VarPtr(GUID_RyAxis):.dwOfs=&HC0:.dwType=DIDFT_ANYINSTANCE or DIDFT_AXIS or DIDFT_OPTIONAL:.dwFlags=DIDOI_ASPECTVELOCITY:End With
|
|---|
| 699 | With p[&H91]:.pguid=VarPtr(GUID_RzAxis):.dwOfs=&HC4:.dwType=DIDFT_ANYINSTANCE or DIDFT_AXIS or DIDFT_OPTIONAL:.dwFlags=DIDOI_ASPECTVELOCITY:End With
|
|---|
| 700 | With p[&H92]:.pguid=VarPtr(GUID_Slider):.dwOfs=&H18:.dwType=DIDFT_ANYINSTANCE or DIDFT_AXIS or DIDFT_OPTIONAL:.dwFlags=DIDOI_ASPECTVELOCITY:End With
|
|---|
| 701 | With p[&H93]:.pguid=VarPtr(GUID_Slider):.dwOfs=&H1C:.dwType=DIDFT_ANYINSTANCE or DIDFT_AXIS or DIDFT_OPTIONAL:.dwFlags=DIDOI_ASPECTVELOCITY:End With
|
|---|
| 702 |
|
|---|
| 703 | With p[&H94]:.pguid=VarPtr(GUID_XAxis):.dwOfs=&HD0:.dwType=DIDFT_ANYINSTANCE or DIDFT_AXIS or DIDFT_OPTIONAL:.dwFlags=DIDOI_ASPECTACCEL:End With
|
|---|
| 704 | With p[&H95]:.pguid=VarPtr(GUID_YAxis):.dwOfs=&HD4:.dwType=DIDFT_ANYINSTANCE or DIDFT_AXIS or DIDFT_OPTIONAL:.dwFlags=DIDOI_ASPECTACCEL:End With
|
|---|
| 705 | With p[&H96]:.pguid=VarPtr(GUID_ZAxis):.dwOfs=&HD8:.dwType=DIDFT_ANYINSTANCE or DIDFT_AXIS or DIDFT_OPTIONAL:.dwFlags=DIDOI_ASPECTACCEL:End With
|
|---|
| 706 | With p[&H97]:.pguid=VarPtr(GUID_RxAxis):.dwOfs=&HDC:.dwType=DIDFT_ANYINSTANCE or DIDFT_AXIS or DIDFT_OPTIONAL:.dwFlags=DIDOI_ASPECTACCEL:End With
|
|---|
| 707 | With p[&H98]:.pguid=VarPtr(GUID_RyAxis):.dwOfs=&HE0:.dwType=DIDFT_ANYINSTANCE or DIDFT_AXIS or DIDFT_OPTIONAL:.dwFlags=DIDOI_ASPECTACCEL:End With
|
|---|
| 708 | With p[&H99]:.pguid=VarPtr(GUID_RzAxis):.dwOfs=&HE4:.dwType=DIDFT_ANYINSTANCE or DIDFT_AXIS or DIDFT_OPTIONAL:.dwFlags=DIDOI_ASPECTACCEL:End With
|
|---|
| 709 | With p[&H9A]:.pguid=VarPtr(GUID_Slider):.dwOfs=&H18:.dwType=DIDFT_ANYINSTANCE or DIDFT_AXIS or DIDFT_OPTIONAL:.dwFlags=DIDOI_ASPECTACCEL:End With
|
|---|
| 710 | With p[&H9B]:.pguid=VarPtr(GUID_Slider):.dwOfs=&H1C:.dwType=DIDFT_ANYINSTANCE or DIDFT_AXIS or DIDFT_OPTIONAL:.dwFlags=DIDOI_ASPECTACCEL:End With
|
|---|
| 711 |
|
|---|
| 712 | With p[&H9C]:.pguid=VarPtr(GUID_XAxis):.dwOfs=&HF0:.dwType=DIDFT_ANYINSTANCE or DIDFT_AXIS or DIDFT_OPTIONAL:.dwFlags=DIDOI_ASPECTFORCE:End With
|
|---|
| 713 | With p[&H9D]:.pguid=VarPtr(GUID_YAxis):.dwOfs=&HF4:.dwType=DIDFT_ANYINSTANCE or DIDFT_AXIS or DIDFT_OPTIONAL:.dwFlags=DIDOI_ASPECTFORCE:End With
|
|---|
| 714 | With p[&H9E]:.pguid=VarPtr(GUID_ZAxis):.dwOfs=&HF8:.dwType=DIDFT_ANYINSTANCE or DIDFT_AXIS or DIDFT_OPTIONAL:.dwFlags=DIDOI_ASPECTFORCE:End With
|
|---|
| 715 | With p[&H9F]:.pguid=VarPtr(GUID_RxAxis):.dwOfs=&HFC:.dwType=DIDFT_ANYINSTANCE or DIDFT_AXIS or DIDFT_OPTIONAL:.dwFlags=DIDOI_ASPECTFORCE:End With
|
|---|
| 716 | With p[&HA0]:.pguid=VarPtr(GUID_RyAxis):.dwOfs=&H100:.dwType=DIDFT_ANYINSTANCE or DIDFT_AXIS or DIDFT_OPTIONAL:.dwFlags=DIDOI_ASPECTFORCE:End With
|
|---|
| 717 | With p[&HA1]:.pguid=VarPtr(GUID_RzAxis):.dwOfs=&H104:.dwType=DIDFT_ANYINSTANCE or DIDFT_AXIS or DIDFT_OPTIONAL:.dwFlags=DIDOI_ASPECTFORCE:End With
|
|---|
| 718 | With p[&HA2]:.pguid=VarPtr(GUID_Slider):.dwOfs=&H18:.dwType=DIDFT_ANYINSTANCE or DIDFT_AXIS or DIDFT_OPTIONAL:.dwFlags=DIDOI_ASPECTFORCE:End With
|
|---|
| 719 | With p[&HA3]:.pguid=VarPtr(GUID_Slider):.dwOfs=&H1C:.dwType=DIDFT_ANYINSTANCE or DIDFT_AXIS or DIDFT_OPTIONAL:.dwFlags=DIDOI_ASPECTFORCE:End With
|
|---|
| 720 | End Sub
|
|---|
| 721 | Dim _System_dfDIJoystick2ObjectDataFormat[&HA3]=[
|
|---|
| 722 | [0,&H00,DIDFT_ANYINSTANCE or DIDFT_AXIS or DIDFT_OPTIONAL,DIDOI_ASPECTPOSITION],
|
|---|
| 723 | [0,&H04,DIDFT_ANYINSTANCE or DIDFT_AXIS or DIDFT_OPTIONAL,DIDOI_ASPECTPOSITION],
|
|---|
| 724 | [0,&H08,DIDFT_ANYINSTANCE or DIDFT_AXIS or DIDFT_OPTIONAL,DIDOI_ASPECTPOSITION],
|
|---|
| 725 | [0,&H0C,DIDFT_ANYINSTANCE or DIDFT_AXIS or DIDFT_OPTIONAL,DIDOI_ASPECTPOSITION],
|
|---|
| 726 | [0,&H10,DIDFT_ANYINSTANCE or DIDFT_AXIS or DIDFT_OPTIONAL,DIDOI_ASPECTPOSITION],
|
|---|
| 727 | [0,&H14,DIDFT_ANYINSTANCE or DIDFT_AXIS or DIDFT_OPTIONAL,DIDOI_ASPECTPOSITION],
|
|---|
| 728 | [0,&H18,DIDFT_ANYINSTANCE or DIDFT_AXIS or DIDFT_OPTIONAL,DIDOI_ASPECTPOSITION],
|
|---|
| 729 | [0,&H1C,DIDFT_ANYINSTANCE or DIDFT_AXIS or DIDFT_OPTIONAL,DIDOI_ASPECTPOSITION],
|
|---|
| 730 | [0,&H20,DIDFT_ANYINSTANCE or DIDFT_POV or DIDFT_OPTIONAL,0],
|
|---|
| 731 | [0,&H24,DIDFT_ANYINSTANCE or DIDFT_POV or DIDFT_OPTIONAL,0],
|
|---|
| 732 | [0,&H28,DIDFT_ANYINSTANCE or DIDFT_POV or DIDFT_OPTIONAL,0],
|
|---|
| 733 | [0,&H2C,DIDFT_ANYINSTANCE or DIDFT_POV or DIDFT_OPTIONAL,0]
|
|---|
| 734 | ] As DIOBJECTDATAFORMAT
|
|---|
| 735 | _System_dfDIJoystick2ObjectDataFormat[0].pguid=VarPtr(GUID_XAxis)
|
|---|
| 736 | _System_dfDIJoystick2ObjectDataFormat[1].pguid=VarPtr(GUID_YAxis)
|
|---|
| 737 | _System_dfDIJoystick2ObjectDataFormat[2].pguid=VarPtr(GUID_ZAxis)
|
|---|
| 738 | _System_dfDIJoystick2ObjectDataFormat[3].pguid=VarPtr(GUID_RxAxis)
|
|---|
| 739 | _System_dfDIJoystick2ObjectDataFormat[4].pguid=VarPtr(GUID_RyAxis)
|
|---|
| 740 | _System_dfDIJoystick2ObjectDataFormat[5].pguid=VarPtr(GUID_RzAxis)
|
|---|
| 741 | _System_dfDIJoystick2ObjectDataFormat[6].pguid=VarPtr(GUID_Slider)
|
|---|
| 742 | _System_dfDIJoystick2ObjectDataFormat[7].pguid=VarPtr(GUID_Slider)
|
|---|
| 743 | _System_dfDIJoystick2ObjectDataFormat[8].pguid=VarPtr(GUID_POV)
|
|---|
| 744 | _System_dfDIJoystick2ObjectDataFormat[9].pguid=VarPtr(GUID_POV)
|
|---|
| 745 | _System_dfDIJoystick2ObjectDataFormat[10].pguid=VarPtr(GUID_POV)
|
|---|
| 746 | _System_dfDIJoystick2ObjectDataFormat[11].pguid=VarPtr(GUID_POV)
|
|---|
| 747 | _System_DirectInput_Joystick2_SetDataType(_System_dfDIJoystickObjectDataFormat)
|
|---|
| 748 | Dim c_dfDIJoystick2=[24,16,DIDF_ABSAXIS,&H110,&HA4,0] As DIDATAFORMAT
|
|---|
| 749 | c_dfDIJoystick2.rgodf=_System_dfDIJoystick2ObjectDataFormat
|
|---|
| 750 |
|
|---|
| 751 |
|
|---|
| 752 | #endif '_INC_DINPUT
|
|---|