e14743d1 |
1 | |
2 | #ifndef _directx_h |
3 | #define _directx_h |
4 | |
5 | /* Include all of the DirectX 5.0 headers and adds any necessary tweaks */ |
6 | |
7 | #define WIN32_LEAN_AND_MEAN |
8 | #include <windows.h> |
9 | #include <mmsystem.h> |
10 | #ifndef WIN32 |
11 | #define WIN32 |
12 | #endif |
13 | #undef WINNT |
14 | |
15 | /* Far pointers don't exist in 32-bit code */ |
16 | #ifndef FAR |
17 | #define FAR |
18 | #endif |
19 | |
20 | /* Error codes not yet included in Win32 API header files */ |
21 | #ifndef MAKE_HRESULT |
22 | #define MAKE_HRESULT(sev,fac,code) \ |
23 | ((HRESULT)(((unsigned long)(sev)<<31) | ((unsigned long)(fac)<<16) | ((unsigned long)(code)))) |
24 | #endif |
25 | |
26 | #ifndef S_OK |
27 | #define S_OK (HRESULT)0x00000000L |
28 | #endif |
29 | |
30 | #ifndef SUCCEEDED |
31 | #define SUCCEEDED(x) ((HRESULT)(x) >= 0) |
32 | #endif |
33 | #ifndef FAILED |
34 | #define FAILED(x) ((HRESULT)(x)<0) |
35 | #endif |
36 | |
37 | #ifndef E_FAIL |
38 | #define E_FAIL (HRESULT)0x80000008L |
39 | #endif |
40 | #ifndef E_NOINTERFACE |
41 | #define E_NOINTERFACE (HRESULT)0x80004002L |
42 | #endif |
43 | #ifndef E_OUTOFMEMORY |
44 | #define E_OUTOFMEMORY (HRESULT)0x8007000EL |
45 | #endif |
46 | #ifndef E_INVALIDARG |
47 | #define E_INVALIDARG (HRESULT)0x80070057L |
48 | #endif |
49 | #ifndef E_NOTIMPL |
50 | #define E_NOTIMPL (HRESULT)0x80004001L |
51 | #endif |
52 | #ifndef REGDB_E_CLASSNOTREG |
53 | #define REGDB_E_CLASSNOTREG (HRESULT)0x80040154L |
54 | #endif |
55 | |
56 | /* Severity codes */ |
57 | #ifndef SEVERITY_ERROR |
58 | #define SEVERITY_ERROR 1 |
59 | #endif |
60 | |
61 | /* Error facility codes */ |
62 | #ifndef FACILITY_WIN32 |
63 | #define FACILITY_WIN32 7 |
64 | #endif |
65 | |
66 | #ifndef FIELD_OFFSET |
67 | #define FIELD_OFFSET(type, field) ((LONG)&(((type *)0)->field)) |
68 | #endif |
69 | |
70 | /* DirectX headers (if it isn't included, I haven't tested it yet) |
71 | */ |
72 | /* We need these defines to mark what version of DirectX API we use */ |
73 | #define DIRECTDRAW_VERSION 0x0700 |
74 | #define DIRECTSOUND_VERSION 0x0500 |
75 | #define DIRECTINPUT_VERSION 0x0700 |
76 | |
77 | #ifdef __GNUC__ |
78 | #define NONAMELESSUNION |
79 | #endif |
80 | #include <ddraw.h> |
81 | #include <dsound.h> |
82 | #include <dinput.h> |
83 | |
84 | #if DIRECTINPUT_VERSION >= 0x0700 && !defined(DIMOFS_BUTTON4) |
85 | typedef struct _DIMOUSESTATE2 { |
86 | LONG lX; |
87 | LONG lY; |
88 | LONG lZ; |
89 | BYTE rgbButtons[8]; |
90 | } DIMOUSESTATE2, *LPDIMOUSESTATE2; |
91 | |
92 | #define DIMOFS_BUTTON4 (FIELD_OFFSET(DIMOUSESTATE2, rgbButtons) + 4) |
93 | #define DIMOFS_BUTTON5 (FIELD_OFFSET(DIMOUSESTATE2, rgbButtons) + 5) |
94 | #define DIMOFS_BUTTON6 (FIELD_OFFSET(DIMOUSESTATE2, rgbButtons) + 6) |
95 | #define DIMOFS_BUTTON7 (FIELD_OFFSET(DIMOUSESTATE2, rgbButtons) + 7) |
96 | |
97 | extern const DIDATAFORMAT c_dfDIMouse2; |
98 | #endif |
99 | |
100 | #endif /* _directx_h */ |