📄 directinput8.pas
字号:
(*)
[------------------------------------------------------------------------------
[ 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 + -