📄 directinput.pas
字号:
//
// IDirectSoundCapture // as: ???
//
IDirectInputEffect = interface (IUnknown)
['{E7E1F7C0-88D2-11D0-9AD0-00A0C9A06E35}']
(** IDirectInputEffect methods ***)
function Initialize(hinst: THandle; dwVersion: DWORD;
const rguid: TGUID) : HResult; stdcall;
function GetEffectGuid(var pguid: TGUID) : HResult; stdcall;
function GetParameters(var peff: TDIEffect; dwFlags: DWORD) : HResult; stdcall;
function SetParameters(var peff: TDIEffect; dwFlags: DWORD) : HResult; stdcall;
function Start(dwIterations: DWORD; dwFlags: DWORD) : HResult; stdcall;
function Stop : HResult; stdcall;
function GetEffectStatus(var pdwFlags : DWORD) : HResult; stdcall;
function Download : HResult; stdcall;
function Unload : HResult; stdcall;
function Escape(var pesc: TDIEffEscape) : HResult; stdcall;
end;
(****************************************************************************
*
* IDirectInputDevice
*
****************************************************************************)
const
DIDEVTYPE_DEVICE = 1;
DIDEVTYPE_MOUSE = 2;
DIDEVTYPE_KEYBOARD = 3;
DIDEVTYPE_JOYSTICK = 4;
DIDEVTYPE_HID = $00010000;
DIDEVTYPEMOUSE_UNKNOWN = 1;
DIDEVTYPEMOUSE_TRADITIONAL = 2;
DIDEVTYPEMOUSE_FINGERSTICK = 3;
DIDEVTYPEMOUSE_TOUCHPAD = 4;
DIDEVTYPEMOUSE_TRACKBALL = 5;
DIDEVTYPEKEYBOARD_UNKNOWN = 0;
DIDEVTYPEKEYBOARD_PCXT = 1;
DIDEVTYPEKEYBOARD_OLIVETTI = 2;
DIDEVTYPEKEYBOARD_PCAT = 3;
DIDEVTYPEKEYBOARD_PCENH = 4;
DIDEVTYPEKEYBOARD_NOKIA1050 = 5;
DIDEVTYPEKEYBOARD_NOKIA9140 = 6;
DIDEVTYPEKEYBOARD_NEC98 = 7;
DIDEVTYPEKEYBOARD_NEC98LAPTOP = 8;
DIDEVTYPEKEYBOARD_NEC98106 = 9;
DIDEVTYPEKEYBOARD_JAPAN106 = 10;
DIDEVTYPEKEYBOARD_JAPANAX = 11;
DIDEVTYPEKEYBOARD_J3100 = 12;
DIDEVTYPEJOYSTICK_UNKNOWN = 1;
DIDEVTYPEJOYSTICK_TRADITIONAL = 2;
DIDEVTYPEJOYSTICK_FLIGHTSTICK = 3;
DIDEVTYPEJOYSTICK_GAMEPAD = 4;
DIDEVTYPEJOYSTICK_RUDDER = 5;
DIDEVTYPEJOYSTICK_WHEEL = 6;
DIDEVTYPEJOYSTICK_HEADTRACKER = 7;
function GET_DIDEVICE_TYPE(dwDevType: variant) : byte;
function GET_DIDEVICE_SUBTYPE(dwDevType: variant) : byte;
type
PDIDevCaps_DX3 = ^TDIDevCaps_DX3;
TDIDevCaps_DX3 = packed record
dwSize: DWORD;
dwFlags: DWORD;
dwDevType: DWORD;
dwAxes: DWORD;
dwButtons: DWORD;
dwPOVs: DWORD;
end;
PDIDevCaps_DX5 = ^TDIDevCaps_DX5;
TDIDevCaps_DX5 = packed record
dwSize: DWORD;
dwFlags: DWORD;
dwDevType: DWORD;
dwAxes: DWORD;
dwButtons: DWORD;
dwPOVs: DWORD;
dwFFSamplePeriod: DWORD;
dwFFMinTimeResolution: DWORD;
dwFirmwareRevision: DWORD;
dwHardwareRevision: DWORD;
dwFFDriverVersion: DWORD;
end;
PDIDevCaps = ^TDIDevCaps;
{$IFDEF DIRECTX3}
TDIDevCaps = TDIDevCaps_DX3;
{$ELSE}
TDIDevCaps = TDIDevCaps_DX5;
{$ENDIF}
const
DIDC_ATTACHED = $00000001;
DIDC_POLLEDDEVICE = $00000002;
DIDC_EMULATED = $00000004;
DIDC_POLLEDDATAFORMAT = $00000008;
DIDC_FORCEFEEDBACK = $00000100;
DIDC_FFATTACK = $00000200;
DIDC_FFFADE = $00000400;
DIDC_SATURATION = $00000800;
DIDC_POSNEGCOEFFICIENTS = $00001000;
DIDC_POSNEGSATURATION = $00002000;
DIDC_DEADBAND = $00004000;
DIDC_STARTDELAY = $00008000;
DIDC_ALIAS = $00010000;
DIDC_PHANTOM = $00020000;
DIDFT_ALL = $00000000;
DIDFT_RELAXIS = $00000001;
DIDFT_ABSAXIS = $00000002;
DIDFT_AXIS = $00000003;
DIDFT_PSHBUTTON = $00000004;
DIDFT_TGLBUTTON = $00000008;
DIDFT_BUTTON = $0000000C;
DIDFT_POV = $00000010;
DIDFT_COLLECTION = $00000040;
DIDFT_NODATA = $00000080;
DIDFT_ANYINSTANCE = $00FFFF00;
DIDFT_INSTANCEMASK = DIDFT_ANYINSTANCE;
function DIDFT_MAKEINSTANCE(n: variant) : DWORD;
function DIDFT_GETTYPE(n: variant) : byte;
function DIDFT_GETINSTANCE(n: variant) : DWORD;
const
DIDFT_FFACTUATOR = $01000000;
DIDFT_FFEFFECTTRIGGER = $02000000;
DIDFT_OUTPUT = $10000000;
DIDFT_VENDORDEFINED = $04000000;
DIDFT_ALIAS = $08000000;
function DIDFT_ENUMCOLLECTION(n: variant) : DWORD;
const
DIDFT_NOCOLLECTION = $00FFFF00;
type
PDIObjectDataFormat = ^TDIObjectDataFormat;
TDIObjectDataFormat = packed record
pguid: PGUID;
dwOfs: DWORD;
dwType: DWORD;
dwFlags: DWORD;
end;
PDIDataFormat = ^TDIDataFormat;
TDIDataFormat = packed record
dwSize: DWORD;
dwObjSize: DWORD;
dwFlags: DWORD;
dwDataSize: DWORD;
dwNumObjs: DWORD;
rgodf: PDIObjectDataFormat;
end;
const
DIDF_ABSAXIS = $00000001;
DIDF_RELAXIS = $00000002;
type
PDIDeviceObjectInstance_DX3A = ^TDIDeviceObjectInstance_DX3A;
TDIDeviceObjectInstance_DX3A = packed record
dwSize: DWORD;
guidType: TGUID;
dwOfs: DWORD;
dwType: DWORD;
dwFlags: DWORD;
tszName: Array [0..MAX_PATH-1] of CHAR;
end;
PDIDeviceObjectInstance_DX3W = ^TDIDeviceObjectInstance_DX3W;
TDIDeviceObjectInstance_DX3W = packed record
dwSize: DWORD;
guidType: TGUID;
dwOfs: DWORD;
dwType: DWORD;
dwFlags: DWORD;
tszName: Array [0..MAX_PATH-1] of WCHAR;
end;
PDIDeviceObjectInstance_DX3 = ^TDIDeviceObjectInstance_DX3;
{$IFDEF UNICODE}
TDIDeviceObjectInstance_DX3 = TDIDeviceObjectInstance_DX3W;
{$ELSE}
TDIDeviceObjectInstance_DX3 = TDIDeviceObjectInstance_DX3A;
{$ENDIF}
PDIDeviceObjectInstance_DX5A = ^TDIDeviceObjectInstance_DX5A;
TDIDeviceObjectInstance_DX5A = packed record
dwSize: DWORD;
guidType: TGUID;
dwOfs: DWORD;
dwType: DWORD;
dwFlags: DWORD;
tszName: Array [0..MAX_PATH-1] of CHAR;
dwFFMaxForce: DWORD;
dwFFForceResolution: DWORD;
wCollectionNumber: WORD;
wDesignatorIndex: WORD;
wUsagePage: WORD;
wUsage: WORD;
dwDimension: DWORD;
wExponent: WORD;
wReserved: WORD;
end;
PDIDeviceObjectInstance_DX5W = ^TDIDeviceObjectInstance_DX5W;
TDIDeviceObjectInstance_DX5W = packed record
dwSize: DWORD;
guidType: TGUID;
dwOfs: DWORD;
dwType: DWORD;
dwFlags: DWORD;
tszName: Array [0..MAX_PATH-1] of WCHAR;
dwFFMaxForce: DWORD;
dwFFForceResolution: DWORD;
wCollectionNumber: WORD;
wDesignatorIndex: WORD;
wUsagePage: WORD;
wUsage: WORD;
dwDimension: DWORD;
wExponent: WORD;
wReserved: WORD;
end;
PDIDeviceObjectInstance_DX5 = ^TDIDeviceObjectInstance_DX5;
{$IFDEF UNICODE}
TDIDeviceObjectInstance_DX5 = TDIDeviceObjectInstance_DX5W;
{$ELSE}
TDIDeviceObjectInstance_DX5 = TDIDeviceObjectInstance_DX5A;
{$ENDIF}
PDIDeviceObjectInstanceA = ^TDIDeviceObjectInstanceA;
PDIDeviceObjectInstanceW = ^TDIDeviceObjectInstanceA;
PDIDeviceObjectInstance = ^TDIDeviceObjectInstance;
{$IFDEF DIRECTX3}
TDIDeviceObjectInstanceA = TDIDeviceObjectInstance_DX3A;
TDIDeviceObjectInstanceW = TDIDeviceObjectInstance_DX3W;
TDIDeviceObjectInstance = TDIDeviceObjectInstance_DX3;
{$ELSE}
TDIDeviceObjectInstanceA = TDIDeviceObjectInstance_DX5A;
TDIDeviceObjectInstanceW = TDIDeviceObjectInstance_DX5W;
TDIDeviceObjectInstance = TDIDeviceObjectInstance_DX5;
{$ENDIF}
// Bug fix (and deviation from the SDK). Callback *must* return
// DIENUM_STOP (= 0) or DIENUM_CONTINUE (=1) in order to work
// with the debug version of DINPUT.DLL
TDIEnumDeviceObjectsCallbackA = function (
var lpddoi: TDIDeviceObjectInstanceA; pvRef: Pointer): Integer; stdcall; // BOOL; stdcall;
TDIEnumDeviceObjectsCallbackW = function (
var lpddoi: TDIDeviceObjectInstanceW; pvRef: Pointer): Integer; stdcall; // BOOL; stdcall;
TDIEnumDeviceObjectsCallback = function (
var lpddoi: TDIDeviceObjectInstance; pvRef: Pointer): Integer; stdcall; // BOOL; stdcall;
TDIEnumDeviceObjectsProc = function (
var lpddoi: TDIDeviceObjectInstance; pvRef: Pointer): Integer; stdcall; // BOOL; stdcall;
const
DIDOI_FFACTUATOR = $00000001;
DIDOI_FFEFFECTTRIGGER = $00000002;
DIDOI_POLLED = $00008000;
DIDOI_ASPECTPOSITION = $00000100;
DIDOI_ASPECTVELOCITY = $00000200;
DIDOI_ASPECTACCEL = $00000300;
DIDOI_ASPECTFORCE = $00000400;
DIDOI_ASPECTMASK = $00000F00;
DIDOI_GUIDISUSAGE = $00010000;
type
PDIPropHeader = ^TDIPropHeader;
TDIPropHeader = packed record
dwSize: DWORD;
dwHeaderSize: DWORD;
dwObj: DWORD;
dwHow: DWORD;
end;
const
DIPH_DEVICE = 0;
DIPH_BYOFFSET = 1;
DIPH_BYID = 2;
DIPH_BYUSAGE = 3;
function DIMAKEUSAGEDWORD(UsagePage, Usage: WORD) : DWORD;
type
PDIPropDWord = ^TDIPropDWord;
TDIPropDWord = packed record
diph: TDIPropHeader;
dwData: DWORD;
end;
PDIPropRange = ^TDIPropRange;
TDIPropRange = packed record
diph: TDIPropHeader;
lMin: Longint;
lMax: Longint;
end;
const
DIPROPRANGE_NOMIN = $80000000;
DIPROPRANGE_NOMAX = $7FFFFFFF;
type
PDIPropCal = ^TDIPropCal;
TDIPropCal = packed record
diph: TDIPropHeader;
lMin: LongInt;
lCenter: LongInt;
lMax: LongInt;
end;
PDIPropGUIDAndPath = ^TDIPropGUIDAndPath;
TDIPropGUIDAndPath = packed record
diph: TDIPropHeader;
guidClass: TGUID;
wszPath: array [0..MAX_PATH-1] of WideChar;
end;
PDIPropString = ^TDIPropString;
TDIPropString = packed record
diph: TDIPropHeader;
wsz: array [0..MAX_PATH-1] of WideChar;
end;
type
MAKEDIPROP = PGUID;
const
DIPROP_BUFFERSIZE = MAKEDIPROP(1);
DIPROP_AXISMODE = MAKEDIPROP(2);
DIPROPAXISMODE_ABS = 0;
DIPROPAXISMODE_REL = 1;
DIPROP_GRANULARITY = MAKEDIPROP(3);
DIPROP_RANGE = MAKEDIPROP(4);
DIPROP_DEADZONE = MAKEDIPROP(5);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -