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

📄 directinput.pas

📁 雷神之锤2(Quake2)Delphi源码
💻 PAS
📖 第 1 页 / 共 5 页
字号:
(*==========================================================================;
 *
 *  Copyright (C) 1996-2000 Microsoft Corporation.  All Rights Reserved.
 *
 *  File:       dinput.h
 *  Content:    DirectInput include file
 *
 *  DirectX 8.0 Delphi adaptation by Tim Baumgarten
 *  partly based upon : DirectX 7.0 Delphi adaptation by Erik Unger
 *
 *  Modified: 26-Nov-2000
 *
 *  E-Mail: ampaze@gmx.net
 *
 *
 ***************************************************************************)

 (*==========================================================================;
 * History :

 * 26-Nov-2000 (Tim Baumgarten) : This file will no longer be updated, use DirectInput8.pas instead.
 *
 * 26-Nov-2000 (Tim Baumgarten) : Returncodes are now typecasted with HResult
 *
 ***************************************************************************)

unit DirectInput;

{$MINENUMSIZE 4}
{$ALIGN ON}
                                                
interface

uses
  Windows,
  MMSystem,
  Direct3D;

var
  DInputDLL, DInput8DLL : HMODULE;


{$IFDEF DIRECTX3}
  const DIRECTINPUT_VERSION = $0300;
{$ELSE}
  {$IFDEF DIRECTX5}
    const DIRECTINPUT_VERSION = $0500;
  {$ELSE}
    {$IFDEF DIRECTX7}
      const DIRECTINPUT_VERSION = $0700;
    {$ELSE}
      {$DEFINE DIRECTX8}
      const DIRECTINPUT_VERSION = $0800;
    {$ENDIF}
  {$ENDIF}
{$ENDIF}




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

//
// Structures
//

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


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

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

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

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

  PDIActionFormatW = ^TDIActionFormatW;
  TDIActionFormatW = packed record
    dwSize : Cardinal;
    dwActionSize : Cardinal;
    dwDataSize  : Cardinal;
    dwNumActions : Cardinal;
    rgoAction : PDIActionW;
    guidActionMap : TGUID;
    dwGenre       : Cardinal;
    dwBufferSize  : Cardinal;
    lAxisMin      : LongInt;
    lAxisMax      : LongInt;
    hInstString   : THandle;
    ftTimeStamp   : TFileTime;
    dwCRC         : Cardinal;
    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            : Cardinal;
    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 : Cardinal;
    dwNegativeSaturation : Cardinal;
    lDeadBand            : LongInt;
  end;

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

  PDIConfigureDevicesParamsW = ^TDIConfigureDevicesParamsW;
  TDIConfigureDevicesParamsW = packed record
     dwSize         : Cardinal;
     dwcUsers       : Cardinal;
     lptszUserNames : LPWSTR;
     dwcFormats     : Cardinal;
     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      : Cardinal;
    dwSamplePeriod : Cardinal;
    cSamples       : Cardinal;
    rglForceData   : PLongInt;
  end;

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

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

  PDIDevCaps_DX3 = ^TDIDevCaps_DX3;
  TDIDevCaps_DX3 = packed record
    dwSize    : Cardinal;
    dwFlags   : Cardinal;
    dwDevType : Cardinal;
    dwAxes    : Cardinal;
    dwButtons : Cardinal;
    dwPOVs    : Cardinal;
  end;

  PDIDevCaps_DX5 = ^TDIDevCaps_DX5;
  TDIDevCaps_DX5 = packed record
    dwSize                : Cardinal;
    dwFlags               : Cardinal;
    dwDevType             : Cardinal;
    dwAxes                : Cardinal;
    dwButtons             : Cardinal;
    dwPOVs                : Cardinal;
    dwFFSamplePeriod      : Cardinal;
    dwFFMinTimeResolution : Cardinal;
    dwFirmwareRevision    : Cardinal;
    dwHardwareRevision    : Cardinal;
    dwFFDriverVersion     : Cardinal;
  end;

  PDIDevCaps = ^TDIDevCaps;
{$IFDEF DIRECTX3}
  TDIDevCaps = TDIDevCaps_DX3;
{$ELSE}
  TDIDevCaps = TDIDevCaps_DX5;
{$ENDIF}

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

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

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

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

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

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

  PDIDeviceInstance_DX3A = ^TDIDeviceInstance_DX3A;
  TDIDeviceInstance_DX3A = packed record
    dwSize          : Cardinal;
    guidInstance    : TGUID;

⌨️ 快捷键说明

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