home *** CD-ROM | disk | FTP | other *** search
/ Beginning C++ Through Gam…rogramming (2nd Edition) / BCGP2E.ISO / bloodshed / devcpp-4.9.9.2_setup.exe / windef.h < prev    next >
C/C++ Source or Header  |  2005-01-29  |  7KB  |  332 lines

  1. #ifndef _WINDEF_H
  2. #define _WINDEF_H
  3. #if __GNUC__ >=3
  4. #pragma GCC system_header
  5. #endif
  6.  
  7. #ifdef __cplusplus
  8. extern "C" {
  9. #endif
  10.  
  11. #ifndef WINVER
  12. #define WINVER 0x0400
  13. /*
  14.  * If you need Win32 API features newer the Win95 and WinNT then you must
  15.  * define WINVER before including windows.h or any other method of including
  16.  * the windef.h header.
  17.  */
  18. #endif
  19. #ifndef _WIN32_WINNT
  20. #define _WIN32_WINNT WINVER
  21. /*
  22.  * There may be the need to define _WIN32_WINNT to a value different from
  23.  * the value of WINVER.  I don't have any example of why you would do that.
  24.  * However, if you must then define _WIN32_WINNT to the value required before
  25.  * including windows.h or any other method of including the windef.h header.
  26.  */
  27. #endif
  28. #ifndef WIN32
  29. #define WIN32
  30. #endif
  31. #ifndef _WIN32
  32. #define _WIN32
  33. #endif
  34. #define FAR
  35. #define far
  36. #define NEAR
  37. #define near
  38. #ifndef CONST
  39. #define CONST const
  40. #endif
  41. #undef MAX_PATH
  42. #define MAX_PATH 260
  43.  
  44. #ifndef NULL
  45. #ifdef __cplusplus
  46. #define NULL 0
  47. #else
  48. #define NULL ((void*)0)
  49. #endif
  50. #endif
  51. #ifndef FALSE
  52. #define FALSE 0
  53. #endif
  54. #ifndef TRUE
  55. #define TRUE 1
  56. #endif
  57. #define IN
  58. #define OUT
  59. #ifndef OPTIONAL
  60. #define OPTIONAL
  61. #endif
  62.  
  63. #ifdef __GNUC__
  64. #define PACKED __attribute__((packed))
  65. #ifndef _fastcall
  66. #define _fastcall __attribute__((fastcall))
  67. #endif
  68. #ifndef __fastcall
  69. #define __fastcall __attribute__((fastcall))
  70. #endif
  71. #ifndef _stdcall
  72. #define _stdcall __attribute__((stdcall))
  73. #endif
  74. #ifndef __stdcall
  75. #define __stdcall __attribute__((stdcall))
  76. #endif
  77. #ifndef _cdecl
  78. #define _cdecl __attribute__((cdecl))
  79. #endif
  80. #ifndef __cdecl
  81. #define __cdecl __attribute__((cdecl))
  82. #endif
  83. #ifndef __declspec
  84. #define __declspec(e) __attribute__((e))
  85. #endif
  86. #ifndef _declspec
  87. #define _declspec(e) __attribute__((e))
  88. #endif
  89. #elif defined(__WATCOMC__)
  90. #define PACKED
  91. #else
  92. #define PACKED
  93. #define _cdecl
  94. #define __cdecl
  95. #endif
  96.  
  97. #undef pascal
  98. #undef _pascal
  99. #undef __pascal
  100. #define pascal __stdcall
  101. #define _pascal __stdcall
  102. #define __pascal __stdcall
  103. #define PASCAL _pascal
  104. #define CDECL _cdecl
  105. #define STDCALL __stdcall
  106. #define FASTCALL __fastcall
  107. #define WINAPI __stdcall
  108. #define WINAPIV __cdecl
  109. #define APIENTRY __stdcall
  110. #define CALLBACK __stdcall
  111. #define APIPRIVATE __stdcall
  112.  
  113. #define DECLSPEC_IMPORT __declspec(dllimport)
  114. #define DECLSPEC_EXPORT __declspec(dllexport)
  115. #ifdef __GNUC__
  116. #define DECLSPEC_NORETURN __declspec(noreturn)
  117. #define DECLARE_STDCALL_P( type ) __stdcall type
  118. #elif defined(__WATCOMC__)
  119. #define DECLSPEC_NORETURN
  120. #define DECLARE_STDCALL_P( type ) type __stdcall
  121. #endif /* __GNUC__/__WATCOMC__ */
  122. #define MAKEWORD(a,b)    ((WORD)(((BYTE)(a))|(((WORD)((BYTE)(b)))<<8)))
  123. #define MAKELONG(a,b)    ((LONG)(((WORD)(a))|(((DWORD)((WORD)(b)))<<16)))
  124. #define LOWORD(l)    ((WORD)((DWORD)(l)))
  125. #define HIWORD(l)    ((WORD)(((DWORD)(l)>>16)&0xFFFF))
  126. #define LOBYTE(w)    ((BYTE)(w))
  127. #define HIBYTE(w)    ((BYTE)(((WORD)(w)>>8)&0xFF))
  128.  
  129. #ifndef __WATCOMC__
  130. #ifndef _export
  131. #define _export
  132. #endif
  133. #ifndef __export
  134. #define __export
  135. #endif
  136. #endif
  137.  
  138. #ifndef NOMINMAX
  139. #ifndef max
  140. #define max(a,b) ((a)>(b)?(a):(b))
  141. #endif
  142. #ifndef min
  143. #define min(a,b) ((a)<(b)?(a):(b))
  144. #endif
  145. #endif
  146.  
  147. #define UNREFERENCED_PARAMETER(P) {(P)=(P);}
  148. #define UNREFERENCED_LOCAL_VARIABLE(L) {(L)=(L);}
  149. #define DBG_UNREFERENCED_PARAMETER(P)
  150. #define DBG_UNREFERENCED_LOCAL_VARIABLE(L)
  151.  
  152. #ifdef __GNUC__
  153. #ifndef NONAMELESSUNION
  154. #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95) 
  155. #define _ANONYMOUS_UNION __extension__
  156. #define _ANONYMOUS_STRUCT __extension__
  157. #else
  158. #if defined(__cplusplus)
  159. #define _ANONYMOUS_UNION __extension__
  160. #endif /* __cplusplus */
  161. #endif /* __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95) */
  162. #endif /* NONAMELESSUNION */
  163. #elif defined(__WATCOMC__)
  164. #define _ANONYMOUS_UNION
  165. #define _ANONYMOUS_STRUCT
  166. #endif /* __GNUC__/__WATCOMC__ */
  167.  
  168. #ifndef _ANONYMOUS_UNION
  169. #define _ANONYMOUS_UNION
  170. #define _UNION_NAME(x) x
  171. #define DUMMYUNIONNAME    u
  172. #define DUMMYUNIONNAME2    u2
  173. #define DUMMYUNIONNAME3    u3
  174. #define DUMMYUNIONNAME4    u4
  175. #define DUMMYUNIONNAME5    u5
  176. #define DUMMYUNIONNAME6    u6
  177. #define DUMMYUNIONNAME7    u7
  178. #define DUMMYUNIONNAME8    u8
  179. #else
  180. #define _UNION_NAME(x)
  181. #define DUMMYUNIONNAME
  182. #define DUMMYUNIONNAME2
  183. #define DUMMYUNIONNAME3
  184. #define DUMMYUNIONNAME4
  185. #define DUMMYUNIONNAME5
  186. #define DUMMYUNIONNAME6
  187. #define DUMMYUNIONNAME7
  188. #define DUMMYUNIONNAME8
  189. #endif
  190. #ifndef _ANONYMOUS_STRUCT
  191. #define _ANONYMOUS_STRUCT
  192. #define _STRUCT_NAME(x) x
  193. #define DUMMYSTRUCTNAME    s
  194. #define DUMMYSTRUCTNAME2 s2
  195. #define DUMMYSTRUCTNAME3 s3
  196. #else
  197. #define _STRUCT_NAME(x)
  198. #define DUMMYSTRUCTNAME
  199. #define DUMMYSTRUCTNAME2
  200. #define DUMMYSTRUCTNAME3
  201. #endif
  202.  
  203. #ifndef NO_STRICT
  204. #ifndef STRICT
  205. #define STRICT 1
  206. #endif
  207. #endif
  208.  
  209. /* FIXME: This will make some code compile. The programs will most
  210.    likely crash when an exception is raised, but at least they will
  211.    compile. */
  212. #if defined (__GNUC__) && defined (__SEH_NOOP)
  213. #define __try
  214. #define __except(x) if (0) /* don't execute handler */
  215. #define __finally
  216.  
  217. #define _try __try
  218. #define _except __except
  219. #define _finally __finally
  220. #endif
  221.  
  222. typedef unsigned long DWORD;
  223. typedef int WINBOOL,*PWINBOOL,*LPWINBOOL;
  224. /* FIXME: Is there a good solution to this? */
  225. #ifndef XFree86Server
  226. #ifndef __OBJC__
  227. typedef WINBOOL BOOL;
  228. #else
  229. #define BOOL WINBOOL
  230. #endif
  231. typedef unsigned char BYTE;
  232. #endif /* ndef XFree86Server */
  233. typedef BOOL *PBOOL,*LPBOOL;
  234. typedef unsigned short WORD;
  235. typedef float FLOAT;
  236. typedef FLOAT *PFLOAT;
  237. typedef BYTE *PBYTE,*LPBYTE;
  238. typedef int *PINT,*LPINT;
  239. typedef WORD *PWORD,*LPWORD;
  240. typedef long *LPLONG;
  241. typedef DWORD *PDWORD,*LPDWORD;
  242. typedef CONST void *PCVOID,*LPCVOID;
  243. typedef int INT;
  244. typedef unsigned int UINT,*PUINT,*LPUINT;
  245.  
  246. #include <winnt.h>
  247.  
  248. typedef UINT_PTR WPARAM;
  249. typedef LONG_PTR LPARAM;
  250. typedef LONG_PTR LRESULT;
  251. #ifndef _HRESULT_DEFINED
  252. typedef LONG HRESULT;
  253. #define _HRESULT_DEFINED
  254. #endif
  255. #ifndef XFree86Server
  256. typedef WORD ATOM;
  257. #endif /* XFree86Server */
  258. typedef HANDLE HGLOBAL;
  259. typedef HANDLE HLOCAL;
  260. typedef HANDLE GLOBALHANDLE;
  261. typedef HANDLE LOCALHANDLE;
  262. typedef void *HGDIOBJ;
  263. DECLARE_HANDLE(HACCEL);
  264. DECLARE_HANDLE(HBITMAP);
  265. DECLARE_HANDLE(HBRUSH);
  266. DECLARE_HANDLE(HCOLORSPACE);
  267. DECLARE_HANDLE(HDC);
  268. DECLARE_HANDLE(HGLRC);
  269. DECLARE_HANDLE(HDESK);
  270. DECLARE_HANDLE(HENHMETAFILE);
  271. DECLARE_HANDLE(HFONT);
  272. DECLARE_HANDLE(HICON);
  273. DECLARE_HANDLE(HKEY);
  274. /* FIXME: How to handle these. SM_CMONITORS etc in winuser.h also. */
  275. /* #if (WINVER >= 0x0500) */
  276. DECLARE_HANDLE(HMONITOR);
  277. #define HMONITOR_DECLARED 1
  278. DECLARE_HANDLE(HTERMINAL);
  279. DECLARE_HANDLE(HWINEVENTHOOK);
  280. /* #endif */
  281. typedef HKEY *PHKEY;
  282. DECLARE_HANDLE(HMENU);
  283. DECLARE_HANDLE(HMETAFILE);
  284. DECLARE_HANDLE(HINSTANCE);
  285. typedef HINSTANCE HMODULE;
  286. DECLARE_HANDLE(HPALETTE);
  287. DECLARE_HANDLE(HPEN);
  288. DECLARE_HANDLE(HRGN);
  289. DECLARE_HANDLE(HRSRC);
  290. DECLARE_HANDLE(HSTR);
  291. DECLARE_HANDLE(HTASK);
  292. DECLARE_HANDLE(HWND);
  293. DECLARE_HANDLE(HWINSTA);
  294. DECLARE_HANDLE(HKL);
  295. typedef int HFILE;
  296. typedef HICON HCURSOR;
  297. typedef DWORD COLORREF;
  298. typedef int (WINAPI *FARPROC)();
  299. typedef int (WINAPI *NEARPROC)();
  300. typedef int (WINAPI *PROC)();
  301. typedef struct tagRECT {
  302.     LONG left;
  303.     LONG top;
  304.     LONG right;
  305.     LONG bottom;
  306. } RECT,*PRECT,*LPRECT;
  307. typedef const RECT *LPCRECT;
  308. typedef struct tagRECTL {
  309.     LONG left;
  310.     LONG top;
  311.     LONG right;
  312.     LONG bottom;
  313. } RECTL,*PRECTL,*LPRECTL;
  314. typedef const RECTL *LPCRECTL;
  315. typedef struct tagPOINT {
  316.     LONG x;
  317.     LONG y;
  318. } POINT,POINTL,*PPOINT,*LPPOINT,*PPOINTL,*LPPOINTL;
  319. typedef struct tagSIZE {
  320.     LONG cx;
  321.     LONG cy;
  322. } SIZE,SIZEL,*PSIZE,*LPSIZE,*PSIZEL,*LPSIZEL;
  323. typedef struct tagPOINTS {
  324.     SHORT x;
  325.     SHORT y;
  326. } POINTS,*PPOINTS,*LPPOINTS;
  327.  
  328. #ifdef __cplusplus
  329. }
  330. #endif
  331. #endif
  332.