home *** CD-ROM | disk | FTP | other *** search
/ Desktop Works 1995 - 1996 / desktopworks1995-1996.iso / scrnsave / spinner / winext.h < prev   
C/C++ Source or Header  |  1996-01-01  |  3KB  |  134 lines

  1. #if !defined(WINEXT_H)
  2. #define WINEXT_H
  3.  
  4. #if defined(__cplusplus)
  5. extern "C" {
  6. #endif // __cplusplus
  7.  
  8. //
  9. // WINEXT.H - additional windows definitions
  10. //
  11. // Version 1.0  03/21/89  Copyright (C) 1989,90,91,92 Lantern Coroporation.
  12. // Author: Edward Hutchins
  13. // Status: Freeware
  14. // Revisions:
  15. // 06/06/90 modified HUGE to LARGE to preserve compatibility with math.h
  16. //          also nested windows.h include to prevent modifications on the
  17. //          actual source file - Ed.
  18. // 10/01/90 added CONST and CONSTP,NP,LP,HP and a few comments - Ed.
  19. // 08/28/91 added EXPORT and SEGMENT - Ed.
  20. // 10/28/91 added DLLEXP - Ed.
  21. // 11/02/91 posted on Compuserve - Ed.
  22. // 11/09/91 added REGISTER - Ed.
  23. // 11/19/91 added ATOM pointer types - Ed.
  24. // 01/02/92 fixed to work with win31 beta II - Ed.
  25. // 01/03/92 added #define STRICT before #include <windows.h> - Ed.
  26. // 01/03/92 #included <windowsx.h> - Ed.
  27. // 02/26/92 added check for NOSTRICT - Ed.
  28. // 02/29/92 added the neat macro wrappers BEGINMACRO and ENDMACRO - Ed.
  29. //
  30.  
  31. //
  32. // include WINDOWS.H, if needed
  33. //
  34.  
  35. #if !defined(WINDOWS_H)
  36.     #if defined(NULL)
  37.         #undef NULL
  38.     #endif
  39.     #if !defined(NOSTRICT)
  40.         #define STRICT
  41.     #endif
  42.     #include <windows.h>
  43.     #include <windowsx.h>
  44.     #if !defined(NULL)
  45.         #define NULL 0
  46.     #endif
  47.     #define WINDOWS_H
  48. #endif // WINDOWS_H
  49.  
  50. //
  51. // extra data types and defines
  52. //
  53.  
  54. #define LARGE huge
  55. // CDECL now lives in windows.h
  56. #define CONST const
  57. #define HNULL NULL
  58. #define LPNULL NULL
  59.  
  60. typedef char        CHAR;
  61. typedef int         INT;
  62. typedef float       FLOAT;
  63. typedef double      DOUBLE;
  64. typedef long double LDOUBLE;
  65.  
  66. // extend the string type
  67. typedef CHAR LARGE *HPSTR;
  68. typedef CONST CHAR LARGE *HPCSTR;
  69.  
  70. // useful macros for typedefing pointers to objects
  71. #define npointerdef(o) typedef o NEAR * NP ## o
  72. #define lpointerdef(o) typedef o FAR * LP ## o
  73. #define hpointerdef(o) typedef o LARGE * HP ## o
  74. #define pointerdef(o) npointerdef(o); lpointerdef(o); hpointerdef(o)
  75.  
  76. // define the different kinds of pointers to things
  77. pointerdef( BOOL );
  78. npointerdef( BYTE ); hpointerdef( BYTE );
  79. pointerdef( CHAR );
  80. npointerdef( INT ); hpointerdef( INT );
  81. pointerdef( UINT );
  82. npointerdef( WORD ); hpointerdef( WORD );
  83. npointerdef( LONG ); hpointerdef( LONG );
  84. npointerdef( DWORD ); hpointerdef( DWORD );
  85. pointerdef( FLOAT );
  86. pointerdef( DOUBLE );
  87. pointerdef( LDOUBLE );
  88. npointerdef( HANDLE ); hpointerdef( HANDLE );
  89. npointerdef( VOID ); hpointerdef( VOID );
  90. pointerdef( ATOM );
  91.  
  92. // common pointers to handles
  93. pointerdef( HANDLE );
  94. pointerdef( HWND );
  95. pointerdef( HDC );
  96.  
  97. // these are here for compatibility - use NPVOID etc...
  98. typedef VOID NEAR *NPMEM;
  99. typedef VOID FAR *LPMEM;
  100.  
  101. // WNDPROC function pointer now lives in windows.h
  102.  
  103. //
  104. // scope protocol definitions
  105. //
  106.  
  107. #define GLOBAL      // GLOBAL
  108. #define LOCAL       static
  109. #define IMPORT      extern
  110. #define FROM(where) // FROM where
  111. #define PROTO       // PROTOTYPE
  112.  
  113. // misc stuff
  114. #define REGISTER register
  115. #define EXPORT _export
  116. #define SEGMENT _segment
  117.  
  118. // multi-line statement grouping macros (fixes if {}; else problem)
  119. #define BEGINMACRO do{
  120. #define ENDMACRO }while(0)
  121.  
  122. #if defined(__cplusplus)
  123. }
  124. #endif // __cplusplus
  125.  
  126. // c++ class export type
  127. #if defined(__DLL__)
  128. #define DLLEXP EXPORT
  129. #else
  130. #define DLLEXP LARGE
  131. #endif
  132.  
  133. #endif // WINEXT_H
  134.