⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 directinput8.pas

📁 雷神之锤2(Quake2)Delphi源码
💻 PAS
📖 第 1 页 / 共 5 页
字号:
  PDIDeviceInstanceW = ^TDIDeviceInstanceW;
  TDIDeviceInstanceW = packed record
    dwSize          : LongWord;
    guidInstance    : TGUID;
    guidProduct     : TGUID;
    dwDevType       : LongWord;
    tszInstanceName : Array [0..MAX_PATH-1] of WideChar;
    tszProductName  : Array [0..MAX_PATH-1] of WideChar;
    guidFFDriver    : TGUID;
    wUsagePage      : Word;
    wUsage          : Word;
  end;

  PDIDeviceInstance = ^TDIDeviceInstance;
{$IFDEF UNICODE}
  TDIDeviceInstance = TDIDeviceInstanceW;
{$ELSE}
  TDIDeviceInstance = TDIDeviceInstanceA;
{$ENDIF}

  PDIDeviceObjectData = ^TDIDeviceObjectData;
  TDIDeviceObjectData = packed record
    dwOfs       : LongWord;
    dwData      : LongWord;
    dwTimeStamp : LongWord;
    dwSequence  : LongWord;
    uAppData    : Pointer;
  end;


  PDIDeviceObjectInstanceA = ^TDIDeviceObjectInstanceA;
  TDIDeviceObjectInstanceA = packed record
    dwSize              : LongWord;
    guidType            : TGUID;
    dwOfs               : LongWord;
    dwType              : LongWord;
    dwFlags             : LongWord;
    tszName             : Array [0..MAX_PATH-1] of CHAR;
    dwFFMaxForce        : LongWord;
    dwFFForceResolution : LongWord;
    wCollectionNumber   : Word;
    wDesignatorIndex    : Word;
    wUsagePage          : Word;
    wUsage              : Word;
    dwDimension         : LongWord;
    wExponent           : Word;
    wReserved           : Word;
  end;

  PDIDeviceObjectInstanceW = ^TDIDeviceObjectInstanceW;
  TDIDeviceObjectInstanceW = packed record
    dwSize              : LongWord;
    guidType            : TGUID;
    dwOfs               : LongWord;
    dwType              : LongWord;
    dwFlags             : LongWord;
    tszName             : Array [0..MAX_PATH-1] of WCHAR;
    dwFFMaxForce        : LongWord;
    dwFFForceResolution : LongWord;
    wCollectionNumber   : Word;
    wDesignatorIndex    : Word;
    wUsagePage          : Word;
    wUsage              : Word;
    dwDimension         : LongWord;
    wExponent           : Word;
    wReserved           : Word;
  end;

  PDIDeviceObjectInstance = ^TDIDeviceObjectInstance;
{$IFDEF UNICODE}
  TDIDeviceObjectInstance = TDIDeviceObjectInstanceW;
{$ELSE}
  TDIDeviceObjectInstance = TDIDeviceObjectInstanceA;
{$ENDIF}

  PDIEnvelope = ^TDIEnvelope;
  TDIEnvelope = packed record
    dwSize        : LongWord;  (* sizeof(DIENVELOPE)   *)
    dwAttackLevel : LongWord;
    dwAttackTime  : LongWord;  (* Microseconds         *)
    dwFadeLevel   : LongWord;
    dwFadeTime    : LongWord;  (* Microseconds         *)
  end;

  PDIEffect = ^TDIEffect;
  TDIEffect = packed record
    dwSize                  : LongWord;     (* sizeof(DIEFFECT)     *)
    dwFlags                 : LongWord;     (* DIEFF_*              *)
    dwDuration              : LongWord;     (* Microseconds         *)
    dwSamplePeriod          : LongWord;     (* Microseconds         *)
    dwGain                  : LongWord;
    dwTriggerButton         : LongWord;     (* or DIEB_NOTRIGGER    *)
    dwTriggerRepeatInterval : LongWord;     (* Microseconds         *)
    cAxes                   : LongWord;     (* Number of axes       *)
    rgdwAxes                : PLongWord;    (* Array of axes        *)
    rglDirection            : PLongInt;     (* Array of directions  *)
    lpEnvelope              : PDIEnvelope;  (* Optional             *)
    cbTypeSpecificParams    : LongWord;     (* Size of params       *)
    lpvTypeSpecificParams   : Pointer;      (* Pointer to params    *)
    dwStartDelay            : LongWord;     (* Microseconds         *)
  end;

  PDIEffectInfoA = ^TDIEffectInfoA;
  TDIEffectInfoA = packed record
    dwSize          : LongWord;
    guid            : TGUID;
    dwEffType       : LongWord;
    dwStaticParams  : LongWord;
    dwDynamicParams : LongWord;
    tszName         : array [0..MAX_PATH-1] of CHAR;
  end;

  PDIEffectInfoW = ^TDIEffectInfoW;
  TDIEffectInfoW = packed record
    dwSize          : LongWord;
    guid            : TGUID;
    dwEffType       : LongWord;
    dwStaticParams  : LongWord;
    dwDynamicParams : LongWord;
    tszName         : array [0..MAX_PATH-1] of WCHAR;
  end;

  PDIEffectInfo = ^TDIEffectInfo;
{$IFDEF UNICODE}
  TDIEffectInfo = TDIEffectInfoW;
{$ELSE}
  TDIEffectInfo = TDIEffectInfoA;
{$ENDIF}

  PDIEffEscape = ^TDIEffEscape;
  TDIEffEscape = packed record
    dwSize       : LongWord;
    dwCommand    : LongWord;
    lpvInBuffer  : Pointer;
    cbInBuffer   : LongWord;
    lpvOutBuffer : Pointer;
    cbOutBuffer  : LongWord;
  end;

  PDIFileEffect = ^TDIFileEffect;
  TDIFileEffect = packed record
    dwSize         : LongWord;
    GuidEffect     : TGUID;
    lpDiEffect     : PDIEffect;
    szFriendlyName : array [0..MAX_PATH-1] of AnsiChar;
  end;

  PDIJoyState = ^TDIJoyState;
  TDIJoyState = packed record
    lX         : LongInt;                   (* x-axis position              *)
    lY         : LongInt;                   (* y-axis position              *)
    lZ         : LongInt;                   (* z-axis position              *)
    lRx        : LongInt;                   (* x-axis rotation              *)
    lRy        : LongInt;                   (* y-axis rotation              *)
    lRz        : LongInt;                   (* z-axis rotation              *)
    rglSlider  : array [0..1] of LongInt;   (* extra axes positions         *)
    rgdwPOV    : array [0..3] of LongWord;  (* POV directions               *)
    rgbButtons : array [0..31] of Byte;     (* 32 buttons                   *)
  end;

  PDIJoyState2 = ^TDIJoyState2;
  TDIJoyState2 = packed record
    lX         : LongInt;                   (* x-axis position              *)
    lY         : LongInt;                   (* y-axis position              *)
    lZ         : LongInt;                   (* z-axis position              *)
    lRx        : LongInt;                   (* x-axis rotation              *)
    lRy        : LongInt;                   (* y-axis rotation              *)
    lRz        : LongInt;                   (* z-axis rotation              *)
    rglSlider  : array [0..1] of LongInt;   (* extra axes positions         *)
    rgdwPOV    : array [0..3] of LongWord;  (* POV directions               *)
    rgbButtons : array [0..127] of Byte;    (* 128 buttons                  *)
    lVX        : LongInt;                   (* x-axis velocity              *)
    lVY        : LongInt;                   (* y-axis velocity              *)
    lVZ        : LongInt;                   (* z-axis velocity              *)
    lVRx       : LongInt;                   (* x-axis angular velocity      *)
    lVRy       : LongInt;                   (* y-axis angular velocity      *)
    lVRz       : LongInt;                   (* z-axis angular velocity      *)
    rglVSlider : array [0..1] of LongInt;   (* extra axes velocities        *)
    lAX        : LongInt;                   (* x-axis acceleration          *)
    lAY        : LongInt;                   (* y-axis acceleration          *)
    lAZ        : LongInt;                   (* z-axis acceleration          *)
    lARx       : LongInt;                   (* x-axis angular acceleration  *)
    lARy       : LongInt;                   (* y-axis angular acceleration  *)
    lARz       : LongInt;                   (* z-axis angular acceleration  *)
    rglASlider : array [0..1] of LongInt;   (* extra axes accelerations     *)
    lFX        : LongInt;                   (* x-axis force                 *)
    lFY        : LongInt;                   (* y-axis force                 *)
    lFZ        : LongInt;                   (* z-axis force                 *)
    lFRx       : LongInt;                   (* x-axis torque                *)
    lFRy       : LongInt;                   (* y-axis torque                *)
    lFRz       : LongInt;                   (* z-axis torque                *)
    rglFSlider : array [0..1] of LongInt;   (* extra axes forces            *)
  end;

  TDIKeyboardState = array[0..255] of Byte;

  PDIMouseState = ^TDIMouseState;
  TDIMouseState = packed record
    lX         : LongInt;
    lY         : LongInt;
    lZ         : LongInt;
    rgbButtons : array [0..3] of Byte;  // up to 4 buttons
  end;

  PDIMouseState2 = ^TDIMouseState2;
  TDIMouseState2 = packed record
    lX         : LongInt;
    lY         : LongInt;
    lZ         : LongInt;
    rgbButtons : array [0..7] of Byte;  // up to 8 buttons
  end;

  PDIPeriodic = ^TDIPeriodic;
  TDIPeriodic = packed record
    dwMagnitude : LongWord;
    lOffset     : LongInt;
    dwPhase     : LongWord;
    dwPeriod    : LongWord;
  end;

  PDIPropHeader = ^TDIPropHeader;
  TDIPropHeader = packed record
    dwSize       : LongWord;
    dwHeaderSize : LongWord;
    dwObj        : LongWord;
    dwHow        : LongWord;
  end;

const
  MAXCPOINTSNUM  = 8;

type
  PDIPropCal = ^TDIPropCal;
  TDIPropCal = packed record
    diph    : TDIPropHeader;
    lMin    : LongInt;
    lCenter : LongInt;
    lMax    : LongInt;
  end;

  PDIPropCPoints = ^TDIPropCPoints;
  TDIPropCPoints = packed record
    diph         : TDIPropHeader;
    dwCPointsNum : LongWord;
    cp           : array [0..MAXCPOINTSNUM-1] of TCPoint;
  end;

  PDIProPDWord = ^TDIProPDWord;
  TDIProPDWord = packed record
    diph   : TDIPropHeader;
    dwData : LongWord;
  end;

//NEW DX8.1  
  PDIProPCalPOV = ^TDIProPCalPOV;
  TDIProPCalPOV = packed record
    diph  : TDIPropHeader;
    lMin  : array[0..4] of LongInt;
    lMax  : array[0..4] of LongInt;
  end;
//NEW DX8.1

  PDIPropGUIDAndPath = ^TDIPropGUIDAndPath;
  TDIPropGUIDAndPath = packed record
    diph      : TDIPropHeader;
    guidClass : TGUID;
    wszPath   : array [0..MAX_PATH-1] of WideChar;
  end;

  PDIPropPointer = ^TDIPropPointer;
  TDIPropPointer = packed record
    diph  : TDIPropHeader;
    uData : Pointer;
  end;

  PDIPropRange = ^TDIPropRange;
  TDIPropRange = packed record
    diph : TDIPropHeader;
    lMin : LongInt;
    lMax : LongInt;
  end;

  PDIPropString = ^TDIPropString;
  TDIPropString = packed record
    diph : TDIPropHeader;
    wsz  : array [0..MAX_PATH - 1] of WideChar;
  end;

  PDIRampForce = ^TDIRampForce;
  TDIRampForce = packed record
    lStart : LongInt;
    lEnd   : LongInt;
  end;  

  MAKEDIPROP = PGUID;

(****************************************************************************
 *
 *      Class IDs
 *
 ****************************************************************************)
const

  CLSID_DirectInput8       : TGUID = '{25E609E4-B259-11CF-BFC7-444553540000}';
  CLSID_DirectInputDevice8 : TGUID = '{25E609E5-B259-11CF-BFC7-444553540000}';

(****************************************************************************
 *
 *      Predefined object types
 *
 ****************************************************************************)

  GUID_XAxis   : TGUID = '{A36D02E0-C9F3-11CF-BFC7-444553540000}';
  GUID_YAxis   : TGUID = '{A36D02E1-C9F3-11CF-BFC7-444553540000}';
  GUID_ZAxis   : TGUID = '{A36D02E2-C9F3-11CF-BFC7-444553540000}';
  GUID_RxAxis  : TGUID = '{A36D02F4-C9F3-11CF-BFC7-444553540000}';
  GUID_RyAxis  : TGUID = '{A36D02F5-C9F3-11CF-BFC7-444553540000}';
  GUID_RzAxis  : TGUID = '{A36D02E3-C9F3-11CF-BFC7-444553540000}';
  GUID_Slider  : TGUID = '{A36D02E4-C9F3-11CF-BFC7-444553540000}';

  GUID_Button  : TGUID = '{A36D02F0-C9F3-11CF-BFC7-444553540000}';
  GUID_Key     : TGUID = '{55728220-D33C-11CF-BFC7-444553540000}';

  GUID_POV     : TGUID = '{A36D02F2-C9F3-11CF-BFC7-444553540000}';

  GUID_Unknown : TGUID = '{A36D02F3-C9F3-11CF-BFC7-444553540000}';

(****************************************************************************
 *
 *      Predefined product GUIDs
 *
 ****************************************************************************)

  GUID_SysMouse       : TGUID = '{6F1D2B60-D5A0-11CF-BFC7-444553540000}';
  GUID_SysKeyboard    : TGUID = '{6F1D2B61-D5A0-11CF-BFC7-444553540000}';
  GUID_Joystick       : TGUID = '{6F1D2B70-D5A0-11CF-BFC7-444553540000}';
  GUID_SysMouseEm     : TGUID = '{6F1D2B80-D5A0-11CF-BFC7-444553540000}';
  GUID_SysMouseEm2    : TGUID = '{6F1D2B81-D5A0-11CF-BFC7-444553540000}';
  GUID_SysKeyboardEm  : TGUID = '{6F1D2B82-D5A0-11CF-BFC7-444553540000}';
  GUID_SysKeyboardEm2 : TGUID = '{6F1D2B83-D5A0-11CF-BFC7-444553540000}';

(****************************************************************************
 *
 *      Predefined force feedback effects
 *

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -