Designing for Previous Versions of DirectInput
In several places, DirectInput requires you to pass a version number to a method. This parameter specifies which version of DirectInput the DirectInput subsystem should emulate.
Applications designed for the latest version of DirectInput should pass the value DIRECTINPUT_VERSION as defined in Dinput.h.
Applications designed to run under previous versions should pass a value corresponding to the version of DirectInput for which they were designed, with the main version number in the high-order byte. For example, an application that was designed to run on DirectInput 3 should pass a value of 0x0300.
If you define DIRECTINPUT_VERSION as 0x0300 before including the Dinput.h header file, then the header file will generate structure definitions compatible with DirectInput 3.0.
If you do not define DIRECTINPUT_VERSION before including the Dinput.h header file, then the header file will generate structure definitions compatible with the current version of DirectInput. However, the DirectX 3-compatible structures will be available under the same names with "_DX3" appended. For example, the DirectX 3-compatible DIDEVCAPS structure is called DIDEVCAPS_DX3.