Home | History | Annotate | Download | only in windx5
      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 #include <ddraw.h>
     78 #include <dsound.h>
     79 #include <dinput.h>
     80 
     81 #if DIRECTINPUT_VERSION >= 0x0700 && !defined(DIMOFS_BUTTON4)
     82 typedef struct _DIMOUSESTATE2 {
     83     LONG    lX;
     84     LONG    lY;
     85     LONG    lZ;
     86     BYTE    rgbButtons[8];
     87 } DIMOUSESTATE2, *LPDIMOUSESTATE2;
     88 
     89 #define DIMOFS_BUTTON4 (FIELD_OFFSET(DIMOUSESTATE2, rgbButtons) + 4)
     90 #define DIMOFS_BUTTON5 (FIELD_OFFSET(DIMOUSESTATE2, rgbButtons) + 5)
     91 #define DIMOFS_BUTTON6 (FIELD_OFFSET(DIMOUSESTATE2, rgbButtons) + 6)
     92 #define DIMOFS_BUTTON7 (FIELD_OFFSET(DIMOUSESTATE2, rgbButtons) + 7)
     93 
     94 extern const DIDATAFORMAT c_dfDIMouse2;
     95 #endif
     96 
     97 #endif /* _directx_h */
     98