Click here to Skip to main content
15,892,005 members
Articles / Desktop Programming / MFC

The Ultimate Toolbox - Updates and User Contributions

Rate me:
Please Sign up or sign in to vote.
4.79/5 (26 votes)
12 Feb 2013CPOL8 min read 255.7K   23.7K   170  
Updates and User Contributions for the Ultimate Toolbox Libraries
// 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

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Web Developer
Canada Canada
In January 2005, David Cunningham and Chris Maunder created TheUltimateToolbox.com, a new group dedicated to the continued development, support and growth of Dundas Software’s award winning line of MFC, C++ and ActiveX control products.

Ultimate Grid for MFC, Ultimate Toolbox for MFC, and Ultimate TCP/IP have been stalwarts of C++/MFC development for a decade. Thousands of developers have used these products to speed their time to market, improve the quality of their finished products, and enhance the reliability and flexibility of their software.
This is a Organisation

476 members

Comments and Discussions