avoid warnings C4311/4312 when building with MSVC >= 7 (patch 1414052)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@37399 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -894,38 +894,28 @@ inline void *wxSetWindowUserData(HWND hwnd, void *data)
|
|||||||
|
|
||||||
#else // __WIN32__
|
#else // __WIN32__
|
||||||
|
|
||||||
#ifdef __VISUALC__
|
// note that the casts to LONG_PTR here are required even on 32-bit machines
|
||||||
// strangely enough, VC++ 7.1 gives warnings about 32 -> 64 bit conversions
|
// for the 64-bit warning mode of later versions of MSVC (C4311/4312)
|
||||||
// in the functions below, even in spite of the explicit casts
|
|
||||||
#pragma warning(disable:4311)
|
|
||||||
#pragma warning(disable:4312)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
inline void *wxGetWindowProc(HWND hwnd)
|
inline void *wxGetWindowProc(HWND hwnd)
|
||||||
{
|
{
|
||||||
return (void *)::GetWindowLong(hwnd, GWL_WNDPROC);
|
return (void *)(LONG_PTR)::GetWindowLong(hwnd, GWL_WNDPROC);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void *wxGetWindowUserData(HWND hwnd)
|
inline void *wxGetWindowUserData(HWND hwnd)
|
||||||
{
|
{
|
||||||
return (void *)::GetWindowLong(hwnd, GWL_USERDATA);
|
return (void *)(LONG_PTR)::GetWindowLong(hwnd, GWL_USERDATA);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline WNDPROC wxSetWindowProc(HWND hwnd, WNDPROC func)
|
inline WNDPROC wxSetWindowProc(HWND hwnd, WNDPROC func)
|
||||||
{
|
{
|
||||||
return (WNDPROC)::SetWindowLong(hwnd, GWL_WNDPROC, (LONG)func);
|
return (WNDPROC)(LONG_PTR)::SetWindowLong(hwnd, GWL_WNDPROC, (LONG_PTR)func);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void *wxSetWindowUserData(HWND hwnd, void *data)
|
inline void *wxSetWindowUserData(HWND hwnd, void *data)
|
||||||
{
|
{
|
||||||
return (void *)::SetWindowLong(hwnd, GWL_USERDATA, (LONG)data);
|
return (void *)(LONG_PTR)::SetWindowLong(hwnd, GWL_USERDATA, (LONG_PTR)data);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef __VISUALC__
|
|
||||||
#pragma warning(default:4311)
|
|
||||||
#pragma warning(default:4312)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif // __WIN64__/__WIN32__
|
#endif // __WIN64__/__WIN32__
|
||||||
|
|
||||||
#endif // wxUSE_GUI
|
#endif // wxUSE_GUI
|
||||||
|
@@ -64,20 +64,17 @@
|
|||||||
#include "wx/msw/winundef.h"
|
#include "wx/msw/winundef.h"
|
||||||
|
|
||||||
|
|
||||||
// types DWORD_PTR, ULONG_PTR and so on might be not defined in old headers but
|
// Types DWORD_PTR, ULONG_PTR and so on are used for 64-bit compatability
|
||||||
// unfortunately I don't know of any standard way to test for this (as they're
|
// in the WINAPI SDK (they are an integral type that is the size of a
|
||||||
// typedefs and not #defines), so simply overwrite them in any case in Win32
|
// pointer) on MSVC 7 and later. However, they are not available in older
|
||||||
// mode -- and if compiling for Win64 they'd better have new headers anyhow
|
// Platform SDKs, and since they are typedefs and not #defines we simply
|
||||||
//
|
// overwrite them if there is a chance that they're not defined
|
||||||
// this is ugly but what else can we do? even testing for compiler version
|
#if !defined(_MSC_VER) || (_MSC_VER < 1300)
|
||||||
// wouldn't help as you can perfectly well be using an older compiler (VC6)
|
|
||||||
// with newer SDK headers
|
|
||||||
#if !defined(__WIN64__) && !defined(__WXWINCE__)
|
|
||||||
#define UINT_PTR unsigned int
|
#define UINT_PTR unsigned int
|
||||||
#define LONG_PTR long
|
#define LONG_PTR long
|
||||||
#define ULONG_PTR unsigned long
|
#define ULONG_PTR unsigned long
|
||||||
#define DWORD_PTR unsigned long
|
#define DWORD_PTR unsigned long
|
||||||
#endif // !__WIN64__
|
#endif // !defined(_MSC_VER) || _MSC_VER < 1300
|
||||||
|
|
||||||
#endif // _WX_WRAPWIN_H_
|
#endif // _WX_WRAPWIN_H_
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user