📄 directinput.pas
字号:
(*==========================================================================;
*
* 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 + -