📄 directinput.pas
字号:
{******************************************************************************}
{* *}
{* Copyright (C) Microsoft Corporation. All Rights Reserved. *}
{* *}
{* Files: dinput.h *}
{* Content: DirectInput include file *}
{* *}
{* DirectX 9.0 Delphi / FreePascal adaptation by Alexey Barkovoy *}
{* E-Mail: directx@clootie.ru *}
{* *}
{* Modified: 30-Nov-2004 *}
{* *}
{* Compatible with : *}
{* DirectX 7.0 Object Pascal adaptation by *}
{* Erik Unger, e-Mail: DelphiDirectX@next-reality.com *}
{* *}
{* Latest version can be downloaded from: *}
{* http://clootie.ru *}
{* http://sourceforge.net/projects/delphi-dx9sdk *}
{* *}
{******************************************************************************}
{ }
{ Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI) }
{ }
{ The contents of this file are used with permission, subject to the Mozilla }
{ Public License Version 1.1 (the "License"); you may not use this file except }
{ in compliance with the License. You may obtain a copy of the License at }
{ http://www.mozilla.org/MPL/MPL-1.1.html }
{ }
{ Software distributed under the License is distributed on an "AS IS" basis, }
{ WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
{ the specific language governing rights and limitations under the License. }
{ }
{ Alternatively, the contents of this file may be used under the terms of the }
{ GNU Lesser General Public License (the "LGPL License"), in which case the }
{ provisions of the LGPL License are applicable instead of those above. }
{ If you wish to allow use of your version of this file only under the terms }
{ of the LGPL License and not to allow others to use your version of this file }
{ under the MPL, indicate your decision by deleting the provisions above and }
{ replace them with the notice and other provisions required by the LGPL }
{ License. If you do not delete the provisions above, a recipient may use }
{ your version of this file under either the MPL or the LGPL License. }
{ }
{ For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
{ }
{******************************************************************************}
// Original source contained in "DirectInput.par"
///////////////////////////////////////////////////////////////////////////////
// Notes:
//----------------------------------------------------------------------------
// Possible input defines for this file, mapped to original C values:
// DIRECTINPUT_VERSION_8 : DIRECTINPUT_VERSION = 0x0800,
// DIRECTINPUT_VERSION_7 : DIRECTINPUT_VERSION = 0x0700,
// DIRECTINPUT_VERSION_6 : DIRECTINPUT_VERSION = 0x0600,
// DIRECTINPUT_VERSION_5b : DIRECTINPUT_VERSION = 0x05b2,
// - in this translation we don't support DirectInput 5.0a (0x050a) version
// - just straight 5.0b (0x05b2) one.
// DIRECTINPUT_VERSION_5 : DIRECTINPUT_VERSION = 0x0500,
// DIRECTINPUT_VERSION_3 : DIRECTINPUT_VERSION = 0x0300,
//
// By default DIRECTINPUT_VERSION_8 (DIRECTINPUT_VERSION = 0x0800) is assumed
//
// Also you can use generic DIRECTXx defines, so:
// DIRECTX9 equal to DIRECTINPUT_VERSION_8;
// DIRECTX8 equal to DIRECTINPUT_VERSION_8;
// DIRECTX7 equal to DIRECTINPUT_VERSION_7;
// DIRECTX6 equal to DIRECTINPUT_VERSION_6;
// DIRECTX5 equal to DIRECTINPUT_VERSION_5;
// DIRECTX3 equal to DIRECTINPUT_VERSION_3
///////////////////////////////////////////////////////////////////////////////
{$I DirectX.inc}
unit DirectInput;
interface
uses
Windows, MMSystem, DXTypes;
////////////////////////////////////////////////////////////////////////
// Global level dynamic loading support
{$IFDEF DYNAMIC_LINK_ALL}
{$DEFINE DIRECTINPUT_DYNAMIC_LINK}
{$ENDIF}
{$IFDEF DYNAMIC_LINK_EXPLICIT_ALL}
{$DEFINE DIRECTINPUT_DYNAMIC_LINK_EXPLICIT}
{$ENDIF}
// Remove "dots" below to force some kind of dynamic linking
{.$DEFINE DIRECTINPUT_DYNAMIC_LINK}
{.$DEFINE DIRECTINPUT_DYNAMIC_LINK_EXPLICIT}
////////////////////////////////////////////////////////////////////////
// Assume for what DirectInput version we will compile headers
{$IFDEF DIRECTX9}
{$DEFINE DIRECTINPUT_VERSION_8}
{$ENDIF}
{$IFDEF DIRECTX8}
{$DEFINE DIRECTINPUT_VERSION_8}
{$ENDIF}
{$IFDEF DIRECTX7}
{$DEFINE DIRECTINPUT_VERSION_7}
{$ENDIF}
{$IFDEF DIRECTX6}
{$DEFINE DIRECTINPUT_VERSION_6}
{$ENDIF}
{$IFDEF DIRECTX5}
{$DEFINE DIRECTINPUT_VERSION_5}
{$ENDIF}
{$IFDEF DIRECTX3}
{$DEFINE DIRECTINPUT_VERSION_3}
{$ENDIF}
{$IFNDEF DIRECTINPUT_VERSION_8}
{$IFNDEF DIRECTINPUT_VERSION_7}
{$IFNDEF DIRECTINPUT_VERSION_5b}
{$IFNDEF DIRECTINPUT_VERSION_5}
{$IFNDEF DIRECTINPUT_VERSION_3}
// Compiling for DirectInput8 by default
{$DEFINE DIRECTINPUT_VERSION_8}
{$ENDIF}
{$ENDIF}
{$ENDIF}
{$ENDIF}
{$ENDIF}
////////////////////////////////////////////////////////////////////////
// Define DirectInputVerrsion constant
const
{$IFDEF DIRECTINPUT_VERSION_8}
DIRECTINPUT_VERSION = $0800;
{$ELSE}{$IFDEF DIRECTINPUT_VERSION_7}
DIRECTINPUT_VERSION = $0700;
{$ELSE}{$IFDEF DIRECTINPUT_VERSION_6}
DIRECTINPUT_VERSION = $0600;
{$ELSE}{$IFDEF DIRECTINPUT_VERSION_5b}
DIRECTINPUT_VERSION = $05b2;
{$ELSE}{$IFDEF DIRECTINPUT_VERSION_5}
DIRECTINPUT_VERSION = $0500;
{$ELSE}{$IFDEF DIRECTINPUT_VERSION_3}
DIRECTINPUT_VERSION = $0300;
{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}
{$EXTERNALSYM DIRECTINPUT_VERSION}
////////////////////////////////////////////////////////////////////////
// Emit conditionals to C++Builder compiler
{$IFDEF DIRECTINPUT_VERSION_3}
{$HPPEMIT '#define DIRECTINPUT_VERSION 0x0300'}
{$ENDIF}
{$IFDEF DIRECTINPUT_VERSION_5}
{$HPPEMIT '#define DIRECTINPUT_VERSION 0x0500'}
{$ENDIF}
{$IFDEF DIRECTINPUT_VERSION_5b}
{$HPPEMIT '#define DIRECTINPUT_VERSION 0x05b2'}
{$ENDIF}
{$IFDEF DIRECTINPUT_VERSION_6}
{$HPPEMIT '#define DIRECTINPUT_VERSION 0x0600'}
{$ENDIF}
{$IFDEF DIRECTINPUT_VERSION_7}
{$HPPEMIT '#define DIRECTINPUT_VERSION 0x0700'}
{$ENDIF}
{$IFDEF DIRECTINPUT_VERSION_8}
{$HPPEMIT '#define DIRECTINPUT_VERSION 0x0800'}
{$ENDIF}
(*$HPPEMIT '#include "dinput.h"' *)
(*$HPPEMIT '' *)
////////////////////////////////////////////////////////////////////////
// Define symbols for '<=' comparision
{$IFDEF DIRECTINPUT_VERSION_8}
{$DEFINE DIRECTINPUT_VERSION_7}
{$ENDIF}
{$IFDEF DIRECTINPUT_VERSION_7}
{$DEFINE DIRECTINPUT_VERSION_6}
{$ENDIF}
{$IFDEF DIRECTINPUT_VERSION_6}
{$DEFINE DIRECTINPUT_VERSION_5b}
{$ENDIF}
{$IFDEF DIRECTINPUT_VERSION_5b}
{$DEFINE DIRECTINPUT_VERSION_5}
{$ENDIF}
{$IFDEF DIRECTINPUT_VERSION_5}
{$DEFINE DIRECTINPUT_VERSION_3}
{$ENDIF}
(****************************************************************************
*
* Copyright (C) 1996-2000 Microsoft Corporation. All Rights Reserved.
*
* File: dinput.h
* Content: DirectInput include file
*
****************************************************************************)
{$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectInputEffect);'}
{$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectInputDeviceA);'}
{$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectInputDeviceW);'}
{$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectInputA);'}
{$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectInputW);'}
{$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectInput2A);'}
{$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectInput2W);'}
{$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectInput7A);'}
{$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectInput7W);'}
{$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectInput8A);'}
{$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectInput8W);'}
{$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectInputDeviceA);'}
{$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectInputDeviceW);'}
{$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectInputDevice2A);'}
{$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectInputDevice2W);'}
{$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectInputDevice7A);'}
{$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectInputDevice7W);'}
{$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectInputDevice8A);'}
{$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectInputDevice8W);'}
{$HPPEMIT '#ifdef UNICODE'}
{$HPPEMIT 'typedef _di_IDirectInputW _di_IDirectInput;'}
{$HPPEMIT 'typedef _di_IDirectInput2W _di_IDirectInput2;'}
{$HPPEMIT 'typedef _di_IDirectInput7W _di_IDirectInput7;'}
{$HPPEMIT 'typedef _di_IDirectInput8W _di_IDirectInput8;'}
{$HPPEMIT 'typedef _di_IDirectInputDeviceW _di_IDirectInputDevice;'}
{$HPPEMIT 'typedef _di_IDirectInputDevice2W _di_IDirectInputDevice2;'}
{$HPPEMIT 'typedef _di_IDirectInputDevice7W _di_IDirectInputDevice7;'}
{$HPPEMIT 'typedef _di_IDirectInputDevice8W _di_IDirectInputDevice8;'}
{$HPPEMIT '#else'}
{$HPPEMIT 'typedef _di_IDirectInputA _di_IDirectInput;'}
{$HPPEMIT 'typedef _di_IDirectInput2A _di_IDirectInput2;'}
{$HPPEMIT 'typedef _di_IDirectInput7A _di_IDirectInput7;'}
{$HPPEMIT 'typedef _di_IDirectInput8A _di_IDirectInput8;'}
{$HPPEMIT 'typedef _di_IDirectInputDeviceA _di_IDirectInputDevice;'}
{$HPPEMIT 'typedef _di_IDirectInputDevice2A _di_IDirectInputDevice2;'}
{$HPPEMIT 'typedef _di_IDirectInputDevice7A _di_IDirectInputDevice7;'}
{$HPPEMIT 'typedef _di_IDirectInputDevice8A _di_IDirectInputDevice8;'}
{$HPPEMIT '#endif'}
(****************************************************************************
*
* Class IDs
*
****************************************************************************)
const
CLSID_DirectInput : TGUID = '{25E609E0-B259-11CF-BFC7-444553540000}';
{$EXTERNALSYM CLSID_DirectInput}
CLSID_DirectInputDevice : TGUID = '{25E609E1-B259-11CF-BFC7-444553540000}';
{$EXTERNALSYM CLSID_DirectInputDevice}
CLSID_DirectInput8 : TGUID = '{25E609E4-B259-11CF-BFC7-444553540000}';
{$EXTERNALSYM CLSID_DirectInput8}
CLSID_DirectInputDevice8 : TGUID = '{25E609E5-B259-11CF-BFC7-444553540000}';
{$EXTERNALSYM CLSID_DirectInputDevice8}
(****************************************************************************
*
* Interfaces
*
****************************************************************************)
const
IID_IDirectInputA : TGUID = '{89521360-AA8A-11CF-BFC7-444553540000}';
{$EXTERNALSYM IID_IDirectInputA}
IID_IDirectInputW : TGUID = '{89521361-AA8A-11CF-BFC7-444553540000}';
{$EXTERNALSYM IID_IDirectInputW}
IID_IDirectInput2A : TGUID = '{5944E662-AA8A-11CF-BFC7-444553540000}';
{$EXTERNALSYM IID_IDirectInput2A}
IID_IDirectInput2W : TGUID = '{5944E663-AA8A-11CF-BFC7-444553540000}';
{$EXTERNALSYM IID_IDirectInput2W}
IID_IDirectInput7A : TGUID = '{9A4CB684-236D-11D3-8E9D-00C04F6844AE}';
{$EXTERNALSYM IID_IDirectInput7A}
IID_IDirectInput7W : TGUID = '{9A4CB685-236D-11D3-8E9D-00C04F6844AE}';
{$EXTERNALSYM IID_IDirectInput7W}
IID_IDirectInput8A : TGUID = '{BF798030-483A-4DA2-AA99-5D64ED369700}';
{$EXTERNALSYM IID_IDirectInput8A}
IID_IDirectInput8W : TGUID = '{BF798031-483A-4DA2-AA99-5D64ED369700}';
{$EXTERNALSYM IID_IDirectInput8W}
IID_IDirectInputDeviceA : TGUID = '{5944E680-C92E-11CF-BFC7-444553540000}';
{$EXTERNALSYM IID_IDirectInputDeviceA}
IID_IDirectInputDeviceW : TGUID = '{5944E681-C92E-11CF-BFC7-444553540000}';
{$EXTERNALSYM IID_IDirectInputDeviceW}
IID_IDirectInputDevice2A : TGUID = '{5944E682-C92E-11CF-BFC7-444553540000}';
{$EXTERNALSYM IID_IDirectInputDevice2A}
IID_IDirectInputDevice2W : TGUID = '{5944E683-C92E-11CF-BFC7-444553540000}';
{$EXTERNALSYM IID_IDirectInputDevice2W}
IID_IDirectInputDevice7A : TGUID = '{57D7C6BC-2356-11D3-8E9D-00C04F6844AE}';
{$EXTERNALSYM IID_IDirectInputDevice7A}
IID_IDirectInputDevice7W : TGUID = '{57D7C6BD-2356-11D3-8E9D-00C04F6844AE}';
{$EXTERNALSYM IID_IDirectInputDevice7W}
IID_IDirectInputDevice8A : TGUID = '{54D41080-DC15-4833-A41B-748F73A38179}';
{$EXTERNALSYM IID_IDirectInputDevice8A}
IID_IDirectInputDevice8W : TGUID = '{54D41081-DC15-4833-A41B-748F73A38179}';
{$EXTERNALSYM IID_IDirectInputDevice8W}
IID_IDirectInputEffect : TGUID = '{E7E1F7C0-88D2-11D0-9AD0-00A0C9A06E35}';
{$EXTERNALSYM IID_IDirectInputEffect}
// String constants for Interface IDs
SID_IDirectInputA = '{89521360-AA8A-11CF-BFC7-444553540000}';
SID_IDirectInputW = '{89521361-AA8A-11CF-BFC7-444553540000}';
SID_IDirectInput2A = '{5944E662-AA8A-11CF-BFC7-444553540000}';
SID_IDirectInput2W = '{5944E663-AA8A-11CF-BFC7-444553540000}';
SID_IDirectInput7A = '{9A4CB684-236D-11D3-8E9D-00C04F6844AE}';
SID_IDirectInput7W = '{9A4CB685-236D-11D3-8E9D-00C04F6844AE}';
SID_IDirectInput8A = '{BF798030-483A-4DA2-AA99-5D64ED369700}';
SID_IDirectInput8W = '{BF798031-483A-4DA2-AA99-5D64ED369700}';
SID_IDirectInputDeviceA = '{5944E680-C92E-11CF-BFC7-444553540000}';
SID_IDirectInputDeviceW = '{5944E681-C92E-11CF-BFC7-444553540000}';
SID_IDirectInputDevice2A = '{5944E682-C92E-11CF-BFC7-444553540000}';
SID_IDirectInputDevice2W = '{5944E683-C92E-11CF-BFC7-444553540000}';
SID_IDirectInputDevice7A = '{57D7C6BC-2356-11D3-8E9D-00C04F6844AE}';
SID_IDirectInputDevice7W = '{57D7C6BD-2356-11D3-8E9D-00C04F6844AE}';
SID_IDirectInputDevice8A = '{54D41080-DC15-4833-A41B-748F73A38179}';
SID_IDirectInputDevice8W = '{54D41081-DC15-4833-A41B-748F73A38179}';
SID_IDirectInputEffect = '{E7E1F7C0-88D2-11D0-9AD0-00A0C9A06E35}';
(****************************************************************************
*
* Predefined object types
*
****************************************************************************)
const
GUID_XAxis : TGUID = '{A36D02E0-C9F3-11CF-BFC7-444553540000}';
{$EXTERNALSYM GUID_XAxis}
GUID_YAxis : TGUID = '{A36D02E1-C9F3-11CF-BFC7-444553540000}';
{$EXTERNALSYM GUID_YAxis}
GUID_ZAxis : TGUID = '{A36D02E2-C9F3-11CF-BFC7-444553540000}';
{$EXTERNALSYM GUID_ZAxis}
GUID_RxAxis : TGUID = '{A36D02F4-C9F3-11CF-BFC7-444553540000}';
{$EXTERNALSYM GUID_RxAxis}
GUID_RyAxis : TGUID = '{A36D02F5-C9F3-11CF-BFC7-444553540000}';
{$EXTERNALSYM GUID_RyAxis}
GUID_RzAxis : TGUID = '{A36D02E3-C9F3-11CF-BFC7-444553540000}';
{$EXTERNALSYM GUID_RzAxis}
GUID_Slider : TGUID = '{A36D02E4-C9F3-11CF-BFC7-444553540000}';
{$EXTERNALSYM GUID_Slider}
GUID_Button : TGUID = '{A36D02F0-C9F3-11CF-BFC7-444553540000}';
{$EXTERNALSYM GUID_Button}
GUID_Key : TGUID = '{55728220-D33C-11CF-BFC7-444553540000}';
{$EXTERNALSYM GUID_Key}
GUID_POV : TGUID = '{A36D02F2-C9F3-11CF-BFC7-444553540000}';
{$EXTERNALSYM GUID_POV}
GUID_Unknown : TGUID = '{A36D02F3-C9F3-11CF-BFC7-444553540000}';
{$EXTERNALSYM GUID_Unknown}
(****************************************************************************
*
* Predefined product GUIDs
*
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -