85 lines
No EOL
2.4 KiB
C
85 lines
No EOL
2.4 KiB
C
// v9.3 update 03 - 64-bit
|
|
#if defined(_WIN64)
|
|
// OnToolHitTest handlers return INT_PTR - code in 32 bit gets away with
|
|
// UINT, which allows VC6 compilation as well. In 64 bit INT_PTR needed,
|
|
// so we'll use this define - TD
|
|
#define OXINTRET INT_PTR
|
|
|
|
// OnTimer calls take a UINT_PTR parameter - code in 32 bit gets away with
|
|
// UINT, again good for VC6. Using UINT_PTR for 64 bit through this define - TD
|
|
#define OXTPARAM UINT_PTR
|
|
|
|
// For lpdwResult param of SendMessageTimeout
|
|
#define OXPDWORD PDWORD_PTR
|
|
|
|
// GetWindowLong defines - the old ones are #undef'd in WinUser.h for 64 bit,
|
|
// so we should be free to reinstate them here - TD
|
|
#define GWL_WNDPROC GWLP_WNDPROC
|
|
#define GWL_HINSTANCE GWLP_HINSTANCE
|
|
#define GWL_HWNDPARENT GWLP_HWNDPARENT
|
|
#define GWL_USERDATA GWLP_USERDATA
|
|
|
|
// GetClassLongPtr defines - again, the old ones are #undef'd in WinUser.h for
|
|
// 64 bit, so we should be free to reinstate them here - TD
|
|
#define GCL_MENUNAME GCLP_MENUNAME
|
|
#define GCL_HBRBACKGROUND GCLP_HBRBACKGROUND
|
|
#define GCL_HCURSOR GCLP_HCURSOR
|
|
#define GCL_HICON GCLP_HICON
|
|
#define GCL_HMODULE GCLP_HMODULE
|
|
#define GCL_WNDPROC GCLP_WNDPROC
|
|
#define GCL_HICONSM GCLP_HICONSM
|
|
|
|
// there are many of these calls in the code to which these macros merely add a
|
|
// C style cast - testing may reveal some idiosyncracies - TD
|
|
#define PtrToInt(x) PtrToInt((VOID*)(x)) // 64 bit version expects void*, not INT_PTR
|
|
#define PtrToLong(x) PtrToLong((VOID*)(x)) // 64 bit version expects void*, not INT_PTR
|
|
#define PtrToUint(x) PtrToUint((VOID*)(x)) // 64 bit version expects void*, not INT_PTR
|
|
#define PtrToUlong(x) PtrToUlong((VOID*)(x)) // 64 bit version expects void*, not INT_PTR
|
|
|
|
#else
|
|
#define OXINTRET int
|
|
#define OXTPARAM UINT
|
|
#define OXPDWORD LPDWORD
|
|
#endif
|
|
|
|
#if _MSC_VER < 1400
|
|
|
|
#ifndef GetWindowLongPtr
|
|
#define GetWindowLongPtr GetWindowLong
|
|
#endif
|
|
|
|
#ifndef SetWindowLongPtr
|
|
#define SetWindowLongPtr SetWindowLong
|
|
#endif
|
|
|
|
#ifndef GetClassLongPtr
|
|
#define GetClassLongPtr GetClassLong
|
|
#endif
|
|
|
|
#ifndef SetClassLongPtr
|
|
#define SetClassLongPtr SetClassLong
|
|
#endif
|
|
|
|
#ifndef ULongToPtr
|
|
#define ULongToPtr(x) x
|
|
#endif
|
|
|
|
#ifndef LongToPtr
|
|
#define LongToPtr(x) x
|
|
#endif
|
|
|
|
#ifndef PtrToUint
|
|
#define PtrToUint(x) x
|
|
#endif
|
|
|
|
#ifndef PtrToInt
|
|
#define PtrToInt(x) x
|
|
#endif
|
|
|
|
typedef DWORD DWORD_PTR;
|
|
typedef LONG LONG_PTR;
|
|
typedef ULONG ULONG_PTR;
|
|
|
|
// Frustratingly, INT_PTR is an int in VC2005, and a long in VC6, so we can't define it here, the code needs to just handle it elsewhere
|
|
|
|
#endif |