--- mstools/h/windef.h 2018/08/09 18:20:01 1.1 +++ mstools/h/windef.h 2018/08/09 18:21:11 1.1.1.3 @@ -15,37 +15,30 @@ Abstract: #ifndef _WINDEF_ #define _WINDEF_ +#ifdef __cplusplus +extern "C" { +#endif + +// the typedef of ULONG should go away here. It will continue to be +// defined in windows\inc\windefp.h + +#ifndef BASETYPE_ULONG +#define BASETYPE_ULONG +typedef unsigned long ULONG; +typedef ULONG *PULONG; +#endif + // BASETYPES is defined in ntdef.h if these types are already defined #ifndef BASETYPES #define BASETYPES -typedef unsigned long ULONG; -typedef ULONG *PULONG; typedef unsigned short USHORT; typedef USHORT *PUSHORT; typedef unsigned char UCHAR; typedef UCHAR *PUCHAR; typedef char *PSZ; -typedef char *PCHAR; - -#ifndef THANKS -#define IN -#define OUT -#define OPTIONAL -#endif // !THANKS - #endif // !BASETYPES -#ifndef THANKS -#define CRITICAL -#define XXX -#define NEXTCOUNT -#define PREVCOUNT -#define BATCH -#define CHUNKY -#define BREAK -#endif // !THANKS - #define MAX_PATH 260 #ifndef NULL @@ -60,20 +53,53 @@ typedef char *PCHAR; #define TRUE 1 #endif +#ifndef IN +#define IN +#endif + +#ifndef OUT +#define OUT +#endif + +#ifndef OPTIONAL +#define OPTIONAL +#endif + #define far #define near #define pascal #ifdef DOSWIN32 #define cdecl _cdecl +#ifndef CDECL +#define CDECL _cdecl +#endif #else #define cdecl +#ifndef CDECL +#define CDECL +#endif #endif -#define APIENTRY + +#if (defined(i386) && ((!defined(I386_HOST)) || (I386_HOST != 0))) || \ + (!defined(i386) && defined(I386_HOST) && (I386_HOST != 0)) +#define CALLBACK __stdcall +#define WINAPI __stdcall +#define APIENTRY WINAPI +#define APIPRIVATE __stdcall +#define PASCAL __stdcall +#else +#define CALLBACK +#define WINAPI +#define APIENTRY WINAPI #define APIPRIVATE +#define PASCAL pascal +#endif #define FAR far #define NEAR near -#define PASCAL pascal +#ifndef CONST +#define CONST const +#endif typedef unsigned long DWORD; typedef int BOOL; @@ -83,9 +109,6 @@ typedef float FLOAT; typedef FLOAT *PFLOAT; typedef BOOL near *PBOOL; typedef BOOL far *LPBOOL; -typedef char near *PSTR; -typedef char near *NPSTR; -typedef char far *LPSTR; typedef BYTE near *PBYTE; typedef BYTE far *LPBYTE; typedef int near *PINT; @@ -105,6 +128,11 @@ typedef unsigned int *PUINT; #include #endif // NT_INCLUDED +/* Types use for passing & returning polymorphic values */ +typedef UINT WPARAM; +typedef LONG LPARAM; +typedef LONG LRESULT; + #ifndef NOMINMAX #ifndef max @@ -126,37 +154,63 @@ typedef unsigned int *PUINT; #ifndef WIN_INTERNAL -typedef HANDLE HWND; -typedef HANDLE HHOOK; +DECLARE_HANDLE (HWND); +DECLARE_HANDLE (HHOOK); #endif typedef WORD ATOM; typedef HANDLE NEAR *SPHANDLE; typedef HANDLE FAR *LPHANDLE; +typedef HANDLE HGLOBAL; +typedef HANDLE HLOCAL; typedef HANDLE GLOBALHANDLE; typedef HANDLE LOCALHANDLE; -typedef int (FAR APIENTRY *FARPROC)(); // should be removed some day!!! -typedef int (NEAR APIENTRY *NEARPROC)(); -typedef int (APIENTRY *PROC)(); // new 32-bit version - -typedef HANDLE HSTR; -typedef HANDLE HICON; -typedef HANDLE HDC; -typedef HANDLE HWINSTA; -typedef HANDLE HDESK; -typedef HANDLE HMENU; -typedef HANDLE HPEN; -typedef HANDLE HFONT; -typedef HANDLE HBRUSH; -typedef HANDLE HBITMAP; -typedef HANDLE HCURSOR; -typedef HANDLE HRGN; -typedef HANDLE HPALETTE; -typedef HANDLE HMODULE; -typedef HANDLE HMF; +#ifdef STRICT +typedef void (FAR WINAPI *FARPROC)(void); // should be removed some day!!! +typedef void (NEAR WINAPI *NEARPROC)(void); +typedef void (WINAPI *PROC)(void); // new 32-bit version +#else +typedef int (FAR WINAPI *FARPROC)(); // should be removed some day!!! +typedef int (NEAR WINAPI *NEARPROC)(); +typedef int (WINAPI *PROC)(); // new 32-bit version +#endif + +#ifdef STRICT +typedef const void NEAR* HGDIOBJ; +#else +DECLARE_HANDLE(HGDIOBJ); +#endif + +DECLARE_HANDLE(HACCEL); +DECLARE_HANDLE(HBITMAP); +DECLARE_HANDLE(HBRUSH); +DECLARE_HANDLE(HDC); +DECLARE_HANDLE(HDESK); +DECLARE_HANDLE(HENHMETAFILE); +DECLARE_HANDLE(HMF); +DECLARE_HANDLE(HEMF); +DECLARE_HANDLE(HFONT); +DECLARE_HANDLE(HICON); +DECLARE_HANDLE(HMENU); +DECLARE_HANDLE(HMETAFILE); +DECLARE_HANDLE(HINSTANCE); +typedef HINSTANCE HMODULE; /* HMODULEs can be used in place of HINSTANCEs */ +DECLARE_HANDLE(HPALETTE); +DECLARE_HANDLE(HPEN); +DECLARE_HANDLE(HRGN); +DECLARE_HANDLE(HRSRC); +DECLARE_HANDLE(HSTR); +DECLARE_HANDLE(HWINSTA); +DECLARE_HANDLE(HKL); + +typedef int HFILE; /* Polymorphic with C runtime file handle type */ +typedef HICON HCURSOR; /* HICONs & HCURSORs are polymorphic */ typedef DWORD COLORREF; +typedef DWORD *LPCOLORREF; + +#define HFILE_ERROR ((HFILE)-1) typedef struct tagRECT { @@ -166,7 +220,7 @@ typedef struct tagRECT LONG bottom; } RECT, *PRECT, NEAR *NPRECT, FAR *LPRECT; -typedef struct _RECTL /* rcl */ +typedef struct _RECTL /* rcl */ { LONG left; LONG top; @@ -224,6 +278,16 @@ typedef struct tagPOINTS #define DC_EXTRA 9 #define DC_VERSION 10 #define DC_DRIVER 11 +#define DC_BINNAMES 12 +#define DC_ENUMRESOLUTIONS 13 +#define DC_FILEDEPENDENCIES 14 +#define DC_TRUETYPE 15 +#define DC_PAPERNAMES 16 +#define DC_ORIENTATION 17 +#define DC_COPIES 18 +#ifdef __cplusplus +} +#endif #endif // _WINDEF_