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

📄 directinput8.pas

📁 雷神之锤2(Quake2)Delphi源码
💻 PAS
📖 第 1 页 / 共 5 页
字号:
(*)
 [------------------------------------------------------------------------------
 [  DirectX 8[.1] Delphi Adaptation (c) by Tim Baumgarten
 [  partly based upon : DirectX 7.0 Delphi adaptation by Erik Unger
 [------------------------------------------------------------------------------
 [  File     : dinput.h
 [  Modified : 11-Nov-2001
 [  E-Mail   : ampaze@gmx.net
 [------------------------------------------------------------------------------
 [  This File contains only DX8.0 | DX8.1 Definitions.
 [  If you want to use older versions use DirectInput.pas !
 [------------------------------------------------------------------------------
(*)

(*)
 [------------------------------------------------------------------------------
 [ History :
 [----------
 [ 11-Nov-2001 (Tim Baumgarten) : Added DX8.1.
 [------------------------------------------------------------------------------
 [ 05-Nov-2001 (Tim Baumgarten) : Changed IDirectInput8{A/W}.SetDataFormat to use a
 [                                Pointer as Input
 [------------------------------------------------------------------------------
 [ 18-Jan-2001 (Tim Baumgarten) : Changed IDirectInput8{A/W}.EnumDevicesBySemantics
 [                                and IDirectInput8{A/W}.ConfigureDevices to use "const"
 [                                instead of "var" for the records.
 [------------------------------------------------------------------------------
 [ 23-Dec-2000 (Tim Baumgarten) : Changed all types that are declared as Cardinal in C
 [                                to be Cardinal in Delphi
 [------------------------------------------------------------------------------
 [ 23-Dec-2000 (Tim Baumgarten) : Changed all types that are declared as DWord in C
 [                                to be LongWord in Delphi
 [------------------------------------------------------------------------------
 [ 26-Nov-2000 (Tim Baumgarten) : Returncodes are now typcasted with HResult
 [------------------------------------------------------------------------------
(*)

unit DirectInput8;

{$MINENUMSIZE 4}
{$ALIGN ON}

//Remove dot to enable static linking, your app will halt with a error message
//when the DInput8.dll cannot be found.
{..!..$DEFINE STATIC_LINKING} //Do not define that ! i won't work yet
{.$DEFINE STATIC_LINKING} //Do not define that ! i won't work yet

interface

uses
  Windows,
  MMSystem,
  DirectXGraphics;

{$IFNDEF STATIC_LINKING}
var DInput8DLL : HMODULE = 0;
{$ENDIF}

const DI8DLLName = 'DInput8.dll';

const DIRECTINPUT_VERSION = $0800;

type
  TRefGUID = packed record
    case integer of
    1 : (guid : PGUID);
    2 : (dwFlags : LongWord);
  end;

//
// Structures
//

  PCPoint = ^TCPoint;
  TCPoint = packed record
    lP    : LongInt;    // raw value
    dwLog : LongWord;   // logical_value / max_logical_value * 10000
  end;


  PDIActionA = ^TDIActionA;
  TDIActionA = packed record
    uAppData   : Pointer;
    dwSemantic : LongWord;
    dwFlags    : LongWord;
    case integer of
    0: (
         lptszActionName : LPCSTR;
         guidInstance    : TGUID;
         dwObjID         : LongWord;
         dwHow           : LongWord
       );
    1: (
         uResIdString : Cardinal;
       );
  end;

  PDIActionW = ^TDIActionW;
  TDIActionW = packed record
    uAppData   : Pointer;
    dwSemantic : LongWord;
    dwFlags    : LongWord;
    case integer of
    0: (
         lptszActionName : LPCWSTR;
         guidInstance    : TGUID;
         dwObjID         : LongWord;
         dwHow           : LongWord
       );
    1: (
         uResIdString : Cardinal;
       );
  end;

  PDIAction = ^TDIAction;
{$IFDEF UNICODE}
  TDIAction = TDIActionW;
{$ELSE}
  TDIAction = TDIActionA;
{$ENDIF}

  PDIActionFormatA = ^TDIActionFormatA;
  TDIActionFormatA = packed record
    dwSize        : LongWord;
    dwActionSize  : LongWord;
    dwDataSize    : LongWord;
    dwNumActions  : LongWord;
    rgoAction     : PDIActionA;
    guidActionMap : TGUID;
    dwGenre       : LongWord;
    dwBufferSize  : LongWord;
    lAxisMin      : LongInt;
    lAxisMax      : LongInt;
    hInstString   : THandle;
    ftTimeStamp   : TFileTime;
    dwCRC         : LongWord;
    tszActionMap  : array [0..MAX_PATH-1] of CHAR;
  end;

  PDIActionFormatW = ^TDIActionFormatW;
  TDIActionFormatW = packed record
    dwSize        : LongWord;
    dwActionSize  : LongWord;
    dwDataSize    : LongWord;
    dwNumActions  : LongWord;
    rgoAction     : PDIActionW;
    guidActionMap : TGUID;
    dwGenre       : LongWord;
    dwBufferSize  : LongWord;
    lAxisMin      : LongInt;
    lAxisMax      : LongInt;
    hInstString   : THandle;
    ftTimeStamp   : TFileTime;
    dwCRC         : LongWord;
    tszActionMap  : array [0..MAX_PATH-1] of WCHAR;
  end;

  PDIActionFormat = ^TDIActionFormat;
{$IFDEF UNICODE}
  TDIActionFormat = TDIActionFormatW;
{$ELSE}
  TDIActionFormat = TDIActionFormatA;
{$ENDIF}

  PDIColorSet = ^TDIColorSet;
  TDIColorSet = packed record
    dwSize            : LongWord;
    cTextFore         : TD3DColor;
    cTextHighlight    : TD3DColor;
    cCalloutLine      : TD3DColor;
    cCalloutHighlight : TD3DColor;
    cBorder           : TD3DColor;
    cControlFill      : TD3DColor;
    cHighlightFill    : TD3DColor;
    cAreaFill         : TD3DColor;
  end;

  PDICondition = ^TDICondition;
  TDICondition = packed record
    lOffset              : LongInt;
    lPositiveCoefficient : LongInt;
    lNegativeCoefficient : LongInt;
    dwPositiveSaturation : LongWord;
    dwNegativeSaturation : LongWord;
    lDeadBand            : LongInt;
  end;

  PDIConfigureDevicesParamsA = ^TDIConfigureDevicesParamsA;
  TDIConfigureDevicesParamsA = packed record
     dwSize         : LongWord;
     dwcUsers       : LongWord;
     lptszUserNames : LPSTR;
     dwcFormats     : LongWord;
     lprgFormats    : PDIActionFormatA;
     hwnd           : Hwnd;
     dics           : TDIColorSet;
     lpUnkDDSTarget : IUnknown;
  end;

  PDIConfigureDevicesParamsW = ^TDIConfigureDevicesParamsW;
  TDIConfigureDevicesParamsW = packed record
     dwSize         : LongWord;
     dwcUsers       : LongWord;
     lptszUserNames : LPWSTR;
     dwcFormats     : LongWord;
     lprgFormats    : PDIActionFormatW;
     hwnd           : Hwnd;
     dics           : TDIColorSet;
     lpUnkDDSTarget : IUnknown;
  end;

  PDIConfigureDevicesParams = ^TDIConfigureDevicesParams;
{$IFDEF UNICODE}
  TDIConfigureDevicesParams = TDIConfigureDevicesParamsW;
{$ELSE}
  TDIConfigureDevicesParams = TDIConfigureDevicesParamsA;
{$ENDIF}

  PDIConstantForce = ^TDIConstantForce;
  TDIConstantForce = packed record
    lMagnitude : LongInt;
  end;

  PDICustomForce = ^TDICustomForce;
  TDICustomForce = packed record
    cChannels      : LongWord;
    dwSamplePeriod : LongWord;
    cSamples       : LongWord;
    rglForceData   : PLongInt;
  end;

  PDIObjectDataFormat = ^TDIObjectDataFormat;
  TDIObjectDataFormat = packed record
    pguid   : PGUID;
    dwOfs   : LongWord;
    dwType  : LongWord;
    dwFlags : LongWord;
  end;

  PDIDataFormat = ^TDIDataFormat;
  TDIDataFormat = packed record
    dwSize     : LongWord;   
    dwObjSize  : LongWord;
    dwFlags    : LongWord;
    dwDataSize : LongWord;
    dwNumObjs  : LongWord;
    rgodf      : PDIObjectDataFormat;
  end;

  PDIDevCaps = ^TDIDevCaps;
  TDIDevCaps = packed record
    dwSize                : LongWord;
    dwFlags               : LongWord;
    dwDevType             : LongWord;
    dwAxes                : LongWord;
    dwButtons             : LongWord;
    dwPOVs                : LongWord;
    dwFFSamplePeriod      : LongWord;
    dwFFMinTimeResolution : LongWord;
    dwFirmwareRevision    : LongWord;
    dwHardwareRevision    : LongWord;
    dwFFDriverVersion     : LongWord;
  end;

  PDIDeviceImageInfoA = ^TDIDeviceImageInfoA;
  TDIDeviceImageInfoA = packed record
    tszImagePath    : array [0..MAX_PATH-1] of CHAR;
    dwFlags         : LongWord;
    // These are valid if DIDIFT_OVERLAY is present in dwFlags.
    dwViewID        : LongWord;
    rcOverlay       : TRect;
    dwObjID         : LongWord;
    dwcValidPts     : LongWord;
    rgptCalloutLine : array [0..4] of TPoint;
    rcCalloutRect   : TRect;
    dwTextAlign     : LongWord;
  end;

  PDIDeviceImageInfoW = ^TDIDeviceImageInfoW;
  TDIDeviceImageInfoW = packed record
    tszImagePath    : array [0..MAX_PATH-1] of WCHAR;
    dwFlags         : LongWord;
    // These are valid if DIDIFT_OVERLAY is present in dwFlags.
    dwViewID        : LongWord;
    rcOverlay       : TRect;
    dwObjID         : LongWord;
    dwcValidPts     : LongWord;
    rgptCalloutLine : array [0..4] of TPoint;
    rcCalloutRect   : TRect;
    dwTextAlign     : LongWord;
  end;

  PDIDeviceImageInfo = ^TDIDeviceImageInfo;
{$IFDEF UNICODE}
  TDIDeviceImageInfo = TDIDeviceImageInfoW;
{$ELSE}
  TDIDeviceImageInfo = TDIDeviceImageInfoA;
{$ENDIF}

  PDIDeviceImageInfoHeaderA = ^TDIDeviceImageInfoHeaderA;
  TDIDeviceImageInfoHeaderA = packed record
    dwSize             : LongWord;
    dwSizeImageInfo    : LongWord;
    dwcViews           : LongWord;
    dwcButtons         : LongWord;
    dwcAxes            : LongWord;
    dwcPOVs            : LongWord;
    dwBufferSize       : LongWord;
    dwBufferUsed       : LongWord;
    lprgImageInfoArray : PDIDeviceImageInfoA;
  end;

  PDIDeviceImageInfoHeaderW = ^TDIDeviceImageInfoHeaderW;
  TDIDeviceImageInfoHeaderW = packed record
    dwSize             : LongWord;
    dwSizeImageInfo    : LongWord;
    dwcViews           : LongWord;
    dwcButtons         : LongWord;
    dwcAxes            : LongWord;
    dwcPOVs            : LongWord;
    dwBufferSize       : LongWord;
    dwBufferUsed       : LongWord;
    lprgImageInfoArray : PDIDeviceImageInfoW;
  end;

  PDIDeviceImageInfoHeader = ^TDIDeviceImageInfoHeader;
{$IFDEF UNICODE}
  TDIDeviceImageInfoHeader = TDIDeviceImageInfoHeaderW;
{$ELSE}
  TDIDeviceImageInfoHeader = TDIDeviceImageInfoHeaderA;
{$ENDIF}

  PDIDeviceInstanceA = ^TDIDeviceInstanceA;
  TDIDeviceInstanceA = packed record
    dwSize          : LongWord;
    guidInstance    : TGUID;
    guidProduct     : TGUID;
    dwDevType       : LongWord;
    tszInstanceName : Array [0..MAX_PATH-1] of AnsiChar;
    tszProductName  : Array [0..MAX_PATH-1] of AnsiChar;
    guidFFDriver    : TGUID;
    wUsagePage      : Word;
    wUsage          : Word;
  end;

⌨️ 快捷键说明

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