tune for 64 bits

This commit is contained in:
VincentWei
2018-01-16 19:07:41 +08:00
parent 060e483872
commit 2fbff87cb4
10 changed files with 247 additions and 136 deletions

View File

@@ -256,6 +256,20 @@ MGUI_COMPILE_TIME_ASSERT(sint64, sizeof(Sint64) == 8);
* @{
*/
#if defined(_WIN64)
# define SIZEOF_PTR 8
#elif defined(__LP64__)
# define SIZEOF_PTR 8
#else
# define SIZEOF_PTR 4
#endif
/**
* \var PVOID
* \brief A type definition for a pointer to any type.
*/
typedef void *PVOID;
/**
* \var typedef int BOOL
* \brief A type definition for boolean value.
@@ -265,6 +279,7 @@ MGUI_COMPILE_TIME_ASSERT(sint64, sizeof(Sint64) == 8);
typedef int BOOL;
#endif
#endif
/**
* \def FALSE
* \brief FALSE value, defined as 0 by MiniGUI.
@@ -318,55 +333,55 @@ typedef int BOOL;
*/
/**
* \var typedef unsigned int GHANDLE
* \var GHANDLE
* \brief General handle.
*/
typedef unsigned int GHANDLE;
typedef PVOID GHANDLE;
/**
* \var typedef unsigned int HWND
* \var HWND
* \brief Handle to main window or control.
*/
typedef unsigned int HWND;
typedef GHANDLE HWND;
/**
* \var typedef unsigned int HDC
* \var HDC
* \brief Handle to device context.
*/
typedef unsigned int HDC;
typedef GHANDLE HDC;
/**
* \var typedef unsigned int HPALETTE
* \var HPALETTE
* \brief Handle to a logical palette.
*/
typedef unsigned int HPALETTE;
typedef GHANDLE HPALETTE;
/**
* \var typedef unsigned int HCURSOR
* \var HCURSOR
* \brief Handle to cursor.
*/
typedef unsigned int HCURSOR;
typedef GHANDLE HCURSOR;
/**
* \var typedef unsigned int HICON
* \var HICON
* \brief Handle to icon.
*/
typedef unsigned int HICON;
typedef GHANDLE HICON;
/**
* \var typedef unsigned int HMENU
* \var HMENU
* \brief Handle to menu.
*/
typedef unsigned int HMENU;
typedef GHANDLE HMENU;
/**
* \var typedef unsigned int HACCEL
* \var HACCEL
* \brief Handle to accelarator.
*/
typedef unsigned int HACCEL;
typedef GHANDLE HACCEL;
/**
* \var typedef unsigned int HDLG
* \var HDLG
* \brief Handle to dialog box, same as HWND.
*/
typedef unsigned int HDLG;
typedef GHANDLE HDLG;
/**
* \var typedef unsigned int HHOOK
* \var HHOOK
* \brief Handle to keyboard or mouse event hook.
*/
typedef unsigned int HHOOK;
typedef GHANDLE HHOOK;
/** @} end of handles */
@@ -376,73 +391,158 @@ typedef unsigned int HHOOK;
*/
/**
* \var typedef unsigned char BYTE
* \brief A type definition for unsigned character (byte).
* \var BYTE
* \brief A type definition for an 8-bit unsigned character (byte).
*/
#ifndef _HAVE_TYPE_BYTE
typedef unsigned char BYTE;
#endif
/**
* \var typedef signed char SBYTE
* \brief A type definition for signed character.
* \var SBYTE
* \brief A type definition for an 8-bit signed character.
*/
typedef signed char SBYTE;
/**
* \var typedef unsigned short WORD
* \brief A type definition for unsigned short integer (word).
* \var WORD_HPTR
* \brief An unsigned int (word) type in half pointer precision.
*/
#ifndef _HAVE_TYPE_WORD
typedef unsigned short WORD;
#if defined(_WIN64)
typedef unsigned int WORD_HPTR;
#elif defined(__LP64__)
typedef unsigned int WORD_HPTR;
#else
typedef unsigned short WORD_HPTR;
#endif
/**
* \var typedef signed short SWORD
* \brief A type definition for signed short integer.
* \var SWORD_HPTR
* \brief An signed int type in half pointer precision.
*/
typedef signed short SWORD;
/**
* \var typedef unsigned long DWORD
* \brief A type definition for unsigned long integer (double word).
*/
#ifndef _HAVE_TYPE_DWORD
typedef unsigned long DWORD;
#if defined(_WIN64)
typedef signed int SWORD_HPTR;
#elif defined(__LP64__)
typedef signed int SWORD_HPTR;
#else
typedef signed short SWORD_HPTR;
#endif
/**
* \var typedef signed long SDWORD
* \brief A type definition for signed long integer.
* \var WORD
* \brief A type definition for an unsigned integer (word).
*/
typedef signed long SDWORD;
typedef WORD_HPTR WORD;
/**
* \var typedef unsigned int UINT
* \var SWORD
* \brief A type definition for a signed integer.
*/
typedef SWORD_HPTR SWORD;
/**
* \var WORD16
* \brief A type definition for a 16-bit unsigned integer (word).
*/
typedef unsigned short WORD16;
/**
* \var SWORD16
* \brief A type definition for a 16-bit signed integer.
*/
typedef signed short SWORD16;
/**
* \var DWORD_PTR
* \brief An unsigned long type for pointer precision.
*
* Commonly used for general 32-bit parameters that have been extended
* to 64 bits in 64-bit platform.
*/
#if defined(_WIN64)
typedef unsigned __int64 DWORD_PTR;
#elif defined(__LP64__)
typedef unsigned long DWORD_PTR;
#else
typedef unsigned int DWORD_PTR;
#endif
/**
* \var DWORD
* \brief A unsigned long type definition for pointer precision.
*/
typedef DWORD_PTR DWORD;
/**
* \var DWORD32
* \brief A type definition for a 32-bit unsigned integer.
*/
typedef unsigned short DWORD32;
/**
* \var SDWORD32
* \brief A type definition for a 32-bit signed integer.
*/
typedef signed short SDWORD32;
/**
* \var UINT
* \brief A type definition for unsigned integer.
*/
#ifndef _HAVE_TYPE_UINT
typedef unsigned int UINT;
typedef unsigned int UINT;
/**
* \var INT_PTR
* \brief A signed integer type for pointer precision.
*/
#if defined(_WIN64)
typedef __int64 INT_PTR;
#elif defined(__LP64__)
typedef long INT_PTR;
#else
typedef int INT_PTR;
#endif
/**
* \var typedef long LONG
* \var UINT_PTR
* \brief A unsigned integer type for pointer precision.
*/
#if defined(_WIN64)
typedef unsigned __int64 UINT_PTR;
#elif defined(__LP64__)
typedef unsigned long UINT_PTR;
#else
typedef unsigned int UINT_PTR;
#endif
#if SIZEOF_PTR == 8
# define INT_PTR_MIN (-9223372036854775807L-1)
# define INT_PTR_MAX (9223372036854775807L)
# define UINT_PTR_MAX (18446744073709551615UL)
#else
# error 64bit arrives 32bit.
# define INT_PTR_MIN (-2147483647-1)
# define INT_PTR_MAX (2147483647)
# define UINT_PTR_MAX (4294967295U)
#endif
/**
* \var typedef LONG
* \brief A type definition for long integer.
*/
#ifndef _HAVE_TYPE_LONG
typedef long LONG;
typedef long LONG;
#endif
/**
* \var typedef unsigned int WPARAM
* \var WPARAM
* \brief A type definition for the first message paramter.
*/
typedef unsigned int WPARAM;
typedef UINT_PTR WPARAM;
/**
* \var typedef unsigned long LPARAM
* \var LPARAM
* \brief A type definition for the second message paramter.
*/
typedef unsigned long LPARAM;
typedef UINT_PTR LPARAM;
/**
* \def LOBYTE(w)

View File

@@ -1090,19 +1090,19 @@ MG_EXPORT BOOL GUIAPI InitPolygonRegion (PCLIPRGN dst,
* \note MiniGUI does not do any clipping operation for this DC,
* so use this DC may make a mess of other windows.
*/
#define HDC_SCREEN 0
#define HDC_SCREEN (HDC)0
/*
* This is a system screen DC create for MiniGUI internal usage, for example,
* menu and z-order operations
*/
#define HDC_SCREEN_SYS 1
#define HDC_SCREEN_SYS (HDC)1
/**
* \def HDC_INVALID
* \brief Indicates an invalid handle to device context.
*/
#define HDC_INVALID 0xFFFFFFFF
#define HDC_INVALID (HDC)UINT_PTR_MAX
#define GDCAP_COLORNUM 0
#define GDCAP_HPIXEL 1

View File

@@ -209,9 +209,9 @@
#if defined(_MSC_VER) && _MSC_VER < 1300 || defined(__DMC__)
/*
* VC++6.0 or early compiler's header has no DWORD_PTR type.
* VC++6.0 or early compiler's header has no DWORD type.
*/
typedef unsigned long DWORD_PTR;
typedef unsigned long DWORD;
#endif
/*
* -----------------

View File

@@ -4893,15 +4893,15 @@ extern MG_EXPORT HWND __mg_hwnd_desktop;
* \def HWND_NULL
* \brief Null window handle.
*/
#define HWND_NULL 0
#define HWND_NULL (HWND)0
/**
* \def HWND_INVALID
* \brief Invalid window handle.
*/
#define HWND_INVALID 0xFFFFFFFF
#define HWND_INVALID (HWND)UINT_PTR_MAX
#define HWND_OTHERPROC 0xFFFFFFFE
#define HWND_OTHERPROC (HWND)UINT_PTR_MAX
/**
* Structure defines a main window.
@@ -8426,10 +8426,10 @@ typedef struct _MENUITEMINFO {
PBITMAP checkedbmp;
/** The private data attached to the menu item */
DWORD itemdata;
DWORD itemdata;
/** The data of this menu item, used to pass the string or the pointer to the BITMAP object of the menu item */
DWORD typedata;
DWORD typedata;
/**
* Used by \a GetMenuItemInfo function to indicate the maximal length
@@ -9056,7 +9056,7 @@ typedef struct _CTRLDATA
/** Control caption */
const char* caption;
/** Additional data */
DWORD dwAddData;
DWORD dwAddData;
/** Control extended style */
DWORD dwExStyle;