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

📄 directinput.pas

📁 雷神之锤2(Quake2)Delphi源码
💻 PAS
📖 第 1 页 / 共 5 页
字号:
    dwMagnitude : Cardinal;
    lOffset     : LongInt;
    dwPhase     : Cardinal;
    dwPeriod    : Cardinal;
  end;

  PDIPropHeader = ^TDIPropHeader;
  TDIPropHeader = packed record
    dwSize       : Cardinal;
    dwHeaderSize : Cardinal;
    dwObj        : Cardinal;
    dwHow        : Cardinal;
  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 : Cardinal;
    cp           : array [0..MAXCPOINTSNUM-1] of TCPoint;
  end;

  PDIPropDWord = ^TDIPropDWord;
  TDIPropDWord = packed record
    diph   : TDIPropHeader;
    dwData : Cardinal;
  end;

  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_DirectInput        : TGUID = '{25E609E0-B259-11CF-BFC7-444553540000}';
  CLSID_DirectInput8       : TGUID = '{25E609E4-B259-11CF-BFC7-444553540000}';
  CLSID_DirectInputDevice  : TGUID = '{25E609E1-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
 *
 ****************************************************************************)

  GUID_ConstantForce : TGUID = '{13541C20-8E33-11D0-9AD0-00A0C9A06E35}';
  GUID_RampForce     : TGUID = '{13541C21-8E33-11D0-9AD0-00A0C9A06E35}';
  GUID_Square        : TGUID = '{13541C22-8E33-11D0-9AD0-00A0C9A06E35}';
  GUID_Sine          : TGUID = '{13541C23-8E33-11D0-9AD0-00A0C9A06E35}';
  GUID_Triangle      : TGUID = '{13541C24-8E33-11D0-9AD0-00A0C9A06E35}';
  GUID_SawtoothUp    : TGUID = '{13541C25-8E33-11D0-9AD0-00A0C9A06E35}';
  GUID_SawtoothDown  : TGUID = '{13541C26-8E33-11D0-9AD0-00A0C9A06E35}';
  GUID_Spring        : TGUID = '{13541C27-8E33-11D0-9AD0-00A0C9A06E35}';
  GUID_Damper        : TGUID = '{13541C28-8E33-11D0-9AD0-00A0C9A06E35}';
  GUID_Inertia       : TGUID = '{13541C29-8E33-11D0-9AD0-00A0C9A06E35}';
  GUID_Friction      : TGUID = '{13541C2A-8E33-11D0-9AD0-00A0C9A06E35}';
  GUID_CustomForce   : TGUID = '{13541C2B-8E33-11D0-9AD0-00A0C9A06E35}';


//
// Interfaces
//

type

  IDirectInputEffect = interface (IUnknown)
    ['{E7E1F7C0-88D2-11D0-9AD0-00A0C9A06E35}']
    (** IDirectInputEffect methods ***)
    function Initialize(hinst : THandle; dwVersion : Cardinal; const rguid : TGUID) : HResult; stdcall;
    function GetEffectGuid(var pguid : TGUID) : HResult;  stdcall;
    function GetParameters(var peff : TDIEffect; dwFlags : Cardinal) : HResult;  stdcall;
    function SetParameters(var peff : TDIEffect; dwFlags : Cardinal) : HResult;  stdcall;
    function Start(dwIterations : Cardinal; dwFlags : Cardinal) : HResult;  stdcall;
    function Stop : HResult;  stdcall;
    function GetEffectStatus(var pdwFlags : Cardinal) : HResult;  stdcall;
    function Download : HResult;  stdcall;
    function Unload : HResult;  stdcall;
    function Escape(var pesc : PDIEffEscape) : HResult;  stdcall;
  end;

  TDIEnumDeviceObjectsCallbackA = function (var lpddoi : TDIDeviceObjectInstanceA; pvRef : Pointer) : Integer; stdcall;
  TDIEnumDeviceObjectsCallbackW = function (var lpddoi : TDIDeviceObjectInstanceW; pvRef : Pointer) : Integer; stdcall;
  TDIEnumDeviceObjectsCallback = function (var lpddoi : TDIDeviceObjectInstance; pvRef : Pointer) : Integer; stdcall;
  TDIEnumDeviceObjectsProc = function (var lpddoi : TDIDeviceObjectInstance; pvRef : Pointer) : Integer; stdcall;


  IDirectInputDeviceA = interface (IUnknown)
    ['{5944E680-C92E-11CF-BFC7-444553540000}']
    (*** IDirectInputDeviceA methods ***)
    function GetCapabilities(var lpDIDevCaps : TDIDevCaps) : HResult; stdcall;
    function EnumObjects(lpCallback : TDIEnumDeviceObjectsCallbackA; pvRef : Pointer; dwFlags : Cardinal) : HResult; stdcall;
    function GetProperty(rguidProp : PGUID; var pdiph : TDIPropHeader) : HResult; stdcall;
    function SetProperty(rguidProp : PGUID; const pdiph : TDIPropHeader) : HResult; stdcall;
    function Acquire : HResult; stdcall;
    function Unacquire : HResult; stdcall;
    function GetDeviceState(cbData : Cardinal; lpvData : Pointer) : HResult; stdcall;
    function GetDeviceData(cbObjectData : Cardinal; rgdod : PDIDeviceObjectData; var pdwInOut : Cardinal; dwFlags : Cardinal) : HResult; stdcall;
    function SetDataFormat(var lpdf : TDIDataFormat) : HResult; stdcall;
    function SetEventNotification(hEvent : THandle) : HResult; stdcall;
    function SetCooperativeLevel(hwnd : HWND; dwFlags : Cardinal) : HResult; stdcall;
    function GetObjectInfo(var pdidoi : TDIDeviceObjectInstanceA; dwObj : Cardinal; dwHow : DWORD) : HResult; stdcall;
    function GetDeviceInfo(var pdidi : TDIDeviceInstanceA) : HResult; stdcall;
    function RunControlPanel(hwndOwner : HWND; dwFlags : DWORD) : HResult; stdcall;
    function Initialize(hinst : THandle; dwVersion : Cardinal; const rguid : TGUID) : HResult; stdcall;
  end;

  IDirectInputDeviceW = interface (IUnknown)
    ['{5944E681-C92E-11CF-BFC7-444553540000}']
    (*** IDirectInputDeviceW methods ***)
    function GetCapabilities(var lpDIDevCaps : TDIDevCaps) : HResult; stdcall;
    function EnumObjects(lpCallback : TDIEnumDeviceObjectsCallbackW; pvRef : Pointer; dwFlags : Cardinal) : HResult; stdcall;
    function GetProperty(rguidProp : PGUID; var pdiph : TDIPropHeader) : HResult; stdcall;
    function SetProperty(rguidProp : PGUID; var pdiph : TDIPropHeader) : HResult; stdcall;
    function Acquire : HResult; stdcall;
    function Unacquire : HResult; stdcall;
    function GetDeviceState(cbData : Cardinal; lpvData : Pointer) : HResult; stdcall;
    function GetDeviceData(cbObjectData : Cardinal; rgdod : PDIDeviceObjectData; var pdwInOut : Cardinal; dwFlags : Cardinal) : HResult; stdcall;
    function SetDataFormat(var lpdf : TDIDataFormat) : HResult; stdcall;
    function SetEventNotification(hEvent : THandle) : HResult; stdcall;
    function SetCooperativeLevel(hwnd : HWND; dwFlags : Cardinal) : HResult; stdcall;
    function GetObjectInfo(var pdidoi : TDIDeviceObjectInstanceW; dwObj : Cardinal; dwHow : Cardinal) : HResult; stdcall;
    function GetDeviceInfo(var pdidi : TDIDeviceInstanceW) : HResult; stdcall;
    function RunControlPanel(hwndOwner : HWND; dwFlags : Cardinal) : HResult; stdcall;
    function Initialize(hinst : THandle; dwVersion : Cardinal; const rguid : TGUID) : HResult; stdcall;
  end;

{$IFDEF UNICODE}
  IDirectInputDevice = IDirectInputDeviceW;
{$ELSE}
  IDirectInputDevice = IDirectInputDeviceA;
{$ENDIF}

type
  TDIEnumEffectsCallbackA = function(var pdei : TDIEffectInfoA; pvRef : Pointer) : Integer; stdcall;
  TDIEnumEffectsCallbackW = function(var pdei : TDIEffectInfoW; pvRef : Pointer) : Integer; stdcall;
  TDIEnumEffectsCallback = function(var pdei : TDIEffectInfo; pvRef : Pointer) : Integer; stdcall;
  TDIEnumEffectsProc = TDIEnumEffectsCallback;

  TDIEnumCreatedEffectObjectsCallback = function(peff : IDirectInputEffect; pvRev : Pointer) : Integer; stdcall;
  TDIEnumCreatedEffectObjectsProc = TDIEnumCreatedEffectObjectsCallback;

  IDirectInputDevice2A = interface (IDirectInputDeviceA)
    ['{5944E682-C92E-11CF-BFC7-444553540000}']
    (*** IDirectInputDevice2A methods ***)
    function CreateEffect(const rguid : TGUID; lpeff : PDIEffect; var ppdeff : IDirectInputEffect; punkOuter : IUnknown) : HResult; stdcall;
    function EnumEffects(lpCallback: TDIEnumEffectsCallbackA; pvRef : Pointer; dwEffType : Cardinal) : HResult; stdcall;
    function GetEffectInfo(var pdei : TDIEffectInfoA; const rguid : TGUID) : HResult; stdcall;
    function GetForceFeedbackState(var pdwOut : Cardinal) : HResult; stdcall;
    function SendForceFeedbackCommand(dwFlags : Cardinal) : HResult; stdcall;
    function EnumCreatedEffectObjects(lpCallback : TDIEnumCreatedEffectObjectsCallback; pvRef : Pointer; fl : Cardinal) : HResult; stdcall;
    function Escape(var pesc : TDIEffEscape) : HResult; stdcall;
    function Poll : HResult; stdcall;
    function SendDeviceData(cbObjectData : Cardinal; var rgdod : TDIDeviceObjectData; var pdwInOut : Cardinal; fl : Cardinal) : HResult; stdcall;
  end;

  IDirectInputDevice2W = interface (IDirectInputDeviceW)
    ['{5944E683-C92E-11CF-BFC7-444553540000}']
    (*** IDirectInputDevice2W methods ***)
    function CreateEffect(const rguid : TGUID; lpeff : PDIEffect; var ppdeff : IDirectInputEffect; punkOuter : IUnknown) : HResult;  stdcall;
    function EnumEffects(lpCallback : TDIEnumEffectsCallbackW; pvRef : pointer; dwEffType : Cardinal) : HResult;  stdcall;
    function GetEffectInfo(var pdei : TDIEffectInfoW; const rguid : TGUID) : HResult;  stdcall;
    function GetForceFeedbackState(var pdwOut : Cardinal) : HResult;  stdcall;
    function SendForceFeedbackCommand(dwFlags : Cardinal) : HResult;  stdcall;
    function EnumCreatedEffectObjects(lpCallback : TDIEnumCreatedEffectObjectsCallback; pvRef : pointer; fl : Cardinal) : HResult;  stdcall;
    function Escape(var pesc : TDIEffEscape) : HResult;  stdcall;
    function Poll : HResult;  stdcall;
    function SendDeviceData(cbObjectData : Cardinal; var rgdod : TDIDeviceObjectData; var pdwInOut : Cardinal; fl : Cardinal) : HResult;  stdcall;
  end;

{$IFDEF UNICODE}
  IDirectInputDevice2 = IDirectInputDevice2W;
{$ELSE}
  IDirectInputDevice2 = IDirectInputDevice2A;
{$ENDIF}

  TEnumEffectsInFileCallback = function(var lpDiFileEf : TDIFileEffect; pvRef : Pointer) : Integer; stdcall;

  IDirectInputDevice7A = interface (IDirectInputDevice2A)
    ['{57D7C6BC-2356-11D3-8E9D-00C04F6844AE}']
    function EnumEffectsInFile(const lpszFileName : PChar; pec : TEnumEffectsInFileCallback; pvRef : Pointer; dwFlags : Cardinal) : HResult; stdcall;
    function WriteEffectToFile(const lpszFileName : PChar; dwEntries : Cardinal; const rgDIFileEft : PDIFileEffect; dwFlags : Cardinal) : HResult; stdcall;
  end;

  IDirectInputDevice7W = interface (IDirectInputDevice2W)
    ['{57D7C6BD-2356-11D3-8E9D-00C04F6844AE}']
    (*** IDirectInputDevice7A methods ***)
    function EnumEffectsInFile(const lpszFileName : PWideChar; pec : TEnumEffectsInFileCallback; pvRef : Pointer; dwFlags : Cardinal) : HResult; stdcall;
    function WriteEffectToFile(const lpszFileName : PWideChar; dwEntries : Cardinal; const rgDIFileEft : PDIFileEffect; dwFlags : Cardinal) : HResult; stdcall;
  end;

{$IFDEF UNICODE}
  IDirectInputDevice7 = IDirectInputDevice7W;
{$ELSE}
  IDirectInputDevice7 = IDirectInputDevice7A;
{$ENDIF}

  IDirectInputDevice8A = interface (IDirectInputDevice7A)
    ['{54D41080-DC15-4833-A41B-748F73A38179}']
    (*** IDirectInputDevice8A methods ***)
    function BuildActionMap(var lpdiaf : TDIActionFormatA; const lpszUserName : PAnsiChar; dwFlags : Cardinal) : HResult; stdcall;
    function SetActionMap(var lpdiActionFormat : TDIActionFormatA; const lptszUserName : PAnsiChar; dwFlags : Cardinal) : HResult; stdcall;
    function GetImageInfo(var lpdiDevImageInfoHeader : TDIDeviceImageInfoHeaderA) : HResult; stdcall;
  end;

  IDirectInputDevice8W = interface (IDirectInputDevice7W)
    ['{54D41081-DC15-4833-A41B-748F73A38179}']
    (*** IDirectInputDevice8A methods ***)
    function BuildActionMap(var lpdiaf : TDIActionFormatW; const lpszUserName : PWideChar; dwFlags : Cardinal) : HResult; stdcall;
    function SetActionMap(var lpdiActionFormat : TDIActionFormatW; const lptszUserName : PWideChar; dwFlags : Cardinal) : HResult; stdcall;
    function GetImageInfo(var lpdiDevImageInfoHeader : TDIDeviceImageInfoHeaderW) : HResult; stdcall;
  end;


{$IFDEF UNICODE}
  IDirectInputDevice8 = IDirectInputDevice8W;
{$ELSE}
  IDirectInputDevice8 = IDirectInputDevice8A;
{$ENDIF}

  TDIEnumDevicesCallbackA = function (var lpddi : TDIDeviceInstanceA; pvRef : Pointer) : Integer; stdcall;
  TDIEnumDevicesCallbackW = function (var lpddi : TDIDeviceInstanceW; pvRef : Pointer) : Integer; stdcall;
  TDIEnumDevicesCallback = function (var lpddi : TDIDeviceInstance; pvRef : Pointer) : Integer; stdcall;
  TDIEnumDevicesProc = TDIEnumDevicesCallback;

  TDIConfigureDevicesCallback = function (lpDDSTarget : IUnknown; pvRef : Pointer) : Integer; stdcall;
  TDIConfigureDevicesProc = TDIConfigureDevicesCallback;

  IDirectInputA = interface (IUnknown)
    ['{89521360-AA8A-11CF-BFC7-444553540000}']
    (*** IDirectInputA methods ***)
    function CreateDevice(const rguid : TGUID; out lplpDirectInputDevice : IDirectInputDeviceA; pUnkOuter : IUnknown) : HResult; stdcall;
    function EnumDevices(dwDevType : Cardinal; lpCallback : TDIEnumDevicesCallbackA; pvRef : Pointer; dwFlags : Cardinal) : HResult; stdcall;
    function GetDeviceStatus(const rguidInstance : TGUID) : HResult; stdcall;
    function RunControlPanel(hwndOwner : HWND; dwFlags : Cardinal) : HResult; stdcall;
    function Initialize(hinst : THandle; dwVersion : Cardinal) : HResult; stdcall;
  end;

  IDirectInputW = interface (IUnknown)
    ['{89521361-AA8A-11CF-BFC7-444553540000}']
    (*** IDirectInputW methods ***)
    function CreateDevice(const rguid : TGUID; var lplpDirectInputDevice : IDirectInputDeviceW; pUnkOuter : IUnknown) : HResult; stdcall;
    function EnumDevices(dwDevType : Cardinal; lpCallback : TDIEnumDevicesCallbackW; pvRef : Pointer; dwFlags : DWORD) : HResult; stdcall;
    function GetDeviceStatus(const rguidInstance : TGUID) : HResult; stdcall;
    function RunControlPanel(hwndOwner : HWND; dwFlags : Cardinal) : HResult; stdcall;
    function Initialize(hinst : THandle; dwVersion : Cardinal) : HResult; stdcall;
  end;

{$IFDEF UNICODE}
  IDirectInput = IDirectInputW;
{$ELSE}
  IDirectInput = IDirectInputA;
{$ENDIF}

  IDirectInput2A = interface (IDirectInputA)
    ['{5944E662-AA8A-11CF-BFC7-444553540000}']
    (*** IDirectInput2A methods ***)
    function FindDevice(const rguidClass : TGUID; ptszName : PAnsiChar; out pguidInstance : TGUID): HResult; stdcall;
  end;

  IDirectInput2W = interface (IDirectInputW)
    ['{5944E663-AA8A-11CF-BFC7-444553540000}']
    (*** IDirectInput2W methods ***)
    function FindDevice(const rguidClass : TGUID; ptszName : PWideChar; out pguidInstance : TGUID): HResult; stdcall;
  end;

{$IFDEF UNICODE}
  IDirectInput2 = IDirectInput2W;
{$ELSE}
  IDirectInput2 = IDirectInput2A;
{$ENDIF}

⌨️ 快捷键说明

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