// 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