您的位置:首页 > 编程语言 > C语言/C++

c++基本类型定义

2012-05-31 09:22 148 查看
/****************************************************************************

* *

* windef.h -- Basic Windows Type Definitions *

* *

* Copyright (c) Microsoft Corporation. All rights reserved. *

* *

****************************************************************************/

#ifndef _WINDEF_

#define _WINDEF_

#pragma once

#ifndef NO_STRICT

#ifndef STRICT

#define STRICT 1

#endif

#endif /* NO_STRICT */

// Win32 defines _WIN32 automatically,

// but Macintosh doesn't, so if we are using

// Win32 Functions, we must do it here

#ifdef _MAC

#ifndef _WIN32

#define _WIN32

#endif

#endif //_MAC

#ifndef WIN32

#define WIN32

#endif

#ifdef __cplusplus

extern "C" {

#endif

#ifndef WINVER

#define WINVER 0x0500

#endif /* WINVER */

/*

* BASETYPES is defined in ntdef.h if these types are already defined

*/

#ifndef BASETYPES

#define BASETYPES

typedef unsigned long ULONG;

typedef ULONG *PULONG;

typedef unsigned short USHORT;

typedef USHORT *PUSHORT;

typedef unsigned char UCHAR;

typedef UCHAR *PUCHAR;

typedef char *PSZ;

#endif /* !BASETYPES */

#define MAX_PATH 260

#ifndef NULL

#ifdef __cplusplus

#define NULL 0

#else

#define NULL ((void *)0)

#endif

#endif

#ifndef FALSE

#define FALSE 0

#endif

#ifndef TRUE

#define TRUE 1

#endif

#ifndef IN

#define IN

#endif

#ifndef OUT

#define OUT

#endif

#ifndef OPTIONAL

#define OPTIONAL

#endif

#undef far

#undef near

#undef pascal

#define far

#define near

#if (!defined(_MAC)) && ((_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED))

#define pascal __stdcall

#else

#define pascal

#endif

#if defined(DOSWIN32) || defined(_MAC)

#define cdecl _cdecl

#ifndef CDECL

#define CDECL _cdecl

#endif

#else

#define cdecl

#ifndef CDECL

#define CDECL

#endif

#endif

#ifdef _MAC

#define CALLBACK PASCAL

#define WINAPI CDECL

#define WINAPIV CDECL

#define APIENTRY WINAPI

#define APIPRIVATE CDECL

#ifdef _68K_

#define PASCAL __pascal

#else

#define PASCAL

#endif

#elif (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED)

#define CALLBACK __stdcall

#define WINAPI __stdcall

#define WINAPIV __cdecl

#define APIENTRY WINAPI

#define APIPRIVATE __stdcall

#define PASCAL __stdcall

#else

#define CALLBACK

#define WINAPI

#define WINAPIV

#define APIENTRY WINAPI

#define APIPRIVATE

#define PASCAL pascal

#endif

#ifdef _M_CEE_PURE

#define WINAPI_INLINE __clrcall

#else

#define WINAPI_INLINE WINAPI

#endif

#undef FAR

#undef NEAR

#define FAR far

#define NEAR near

#ifndef CONST

#define CONST const

#endif

typedef unsigned long DWORD;

typedef int BOOL;

typedef unsigned char BYTE;

typedef unsigned short WORD;

typedef float FLOAT;

typedef FLOAT *PFLOAT;

typedef BOOL near *PBOOL;

typedef BOOL far *LPBOOL;

typedef BYTE near *PBYTE;

typedef BYTE far *LPBYTE;

typedef int near *PINT;

typedef int far *LPINT;

typedef WORD near *PWORD;

typedef WORD far *LPWORD;

typedef long far *LPLONG;

typedef DWORD near *PDWORD;

typedef DWORD far *LPDWORD;

typedef void far *LPVOID;

typedef CONST void far *LPCVOID;

typedef int INT;

typedef unsigned int UINT;

typedef unsigned int *PUINT;

#ifndef NT_INCLUDED

#include <winnt.h>

#endif /* NT_INCLUDED */

#include <specstrings.h>

/* Types use for passing & returning polymorphic values */

typedef UINT_PTR WPARAM;

typedef LONG_PTR LPARAM;

typedef LONG_PTR LRESULT;

#ifndef NOMINMAX

#ifndef max

#define max(a,b) (((a) > (b)) ? (a) : (b))

#endif

#ifndef min

#define min(a,b) (((a) < (b)) ? (a) : (b))

#endif

#endif /* NOMINMAX */

#define MAKEWORD(a, b) ((WORD)(((BYTE)(((DWORD_PTR)(a)) & 0xff)) | ((WORD)((BYTE)(((DWORD_PTR)(b)) & 0xff))) << 8))

#define MAKELONG(a, b) ((LONG)(((WORD)(((DWORD_PTR)(a)) & 0xffff)) | ((DWORD)((WORD)(((DWORD_PTR)(b)) & 0xffff))) << 16))

#define LOWORD(l) ((WORD)(((DWORD_PTR)(l)) & 0xffff))

#define HIWORD(l) ((WORD)((((DWORD_PTR)(l)) >> 16) & 0xffff))

#define LOBYTE(w) ((BYTE)(((DWORD_PTR)(w)) & 0xff))

#define HIBYTE(w) ((BYTE)((((DWORD_PTR)(w)) >> 8) & 0xff))

#ifndef WIN_INTERNAL

DECLARE_HANDLE (HWND);

DECLARE_HANDLE (HHOOK);

#ifdef WINABLE

DECLARE_HANDLE (HEVENT);

#endif

#endif

typedef WORD ATOM;

typedef HANDLE NEAR *SPHANDLE;

typedef HANDLE FAR *LPHANDLE;

typedef HANDLE HGLOBAL;

typedef HANDLE HLOCAL;

typedef HANDLE GLOBALHANDLE;

typedef HANDLE LOCALHANDLE;

#ifndef _MANAGED

#ifndef _MAC

#ifdef _WIN64

typedef INT_PTR (FAR WINAPI *FARPROC)();

typedef INT_PTR (NEAR WINAPI *NEARPROC)();

typedef INT_PTR (WINAPI *PROC)();

#else

typedef int (FAR WINAPI *FARPROC)();

typedef int (NEAR WINAPI *NEARPROC)();

typedef int (WINAPI *PROC)();

#endif // _WIN64

#else

typedef int (CALLBACK *FARPROC)();

typedef int (CALLBACK *NEARPROC)();

typedef int (CALLBACK *PROC)();

#endif

#else

typedef INT_PTR (WINAPI *FARPROC)(void);

typedef INT_PTR (WINAPI *NEARPROC)(void);

typedef INT_PTR (WINAPI *PROC)(void);

#endif

#if !defined(_MAC) || !defined(GDI_INTERNAL)

#ifdef STRICT

typedef void NEAR* HGDIOBJ;

#else

DECLARE_HANDLE(HGDIOBJ);

#endif

#endif

DECLARE_HANDLE(HKEY);

typedef HKEY *PHKEY;

#if !defined(_MAC) || !defined(WIN_INTERNAL)

DECLARE_HANDLE(HACCEL);

#endif

#if !defined(_MAC) || !defined(GDI_INTERNAL)

DECLARE_HANDLE(HBITMAP);

DECLARE_HANDLE(HBRUSH);

#endif

#if(WINVER >= 0x0400)

DECLARE_HANDLE(HCOLORSPACE);

#endif /* WINVER >= 0x0400 */

#if !defined(_MAC) || !defined(GDI_INTERNAL)

DECLARE_HANDLE(HDC);

#endif

DECLARE_HANDLE(HGLRC); // OpenGL

DECLARE_HANDLE(HDESK);

DECLARE_HANDLE(HENHMETAFILE);

#if !defined(_MAC) || !defined(GDI_INTERNAL)

DECLARE_HANDLE(HFONT);

#endif

DECLARE_HANDLE(HICON);

#if !defined(_MAC) || !defined(WIN_INTERNAL)

DECLARE_HANDLE(HMENU);

#endif

DECLARE_HANDLE(HMETAFILE);

DECLARE_HANDLE(HINSTANCE);

typedef HINSTANCE HMODULE; /* HMODULEs can be used in place of HINSTANCEs */

#if !defined(_MAC) || !defined(GDI_INTERNAL)

DECLARE_HANDLE(HPALETTE);

DECLARE_HANDLE(HPEN);

#endif

DECLARE_HANDLE(HRGN);

DECLARE_HANDLE(HRSRC);

DECLARE_HANDLE(HSPRITE);

DECLARE_HANDLE(HLSURF);

DECLARE_HANDLE(HSTR);

DECLARE_HANDLE(HTASK);

DECLARE_HANDLE(HWINSTA);

DECLARE_HANDLE(HKL);

#if(WINVER >= 0x0400)

DECLARE_HANDLE(HWINEVENTHOOK);

#endif /* WINVER >= 0x0400 */

#if(WINVER >= 0x0500)

#ifndef _MAC

DECLARE_HANDLE(HMONITOR);

#endif

DECLARE_HANDLE(HUMPD);

#endif /* WINVER >= 0x0500 */

#ifndef _MAC

typedef int HFILE;

typedef HICON HCURSOR; /* HICONs & HCURSORs are polymorphic */

#else

typedef short HFILE;

DECLARE_HANDLE(HCURSOR); /* HICONs & HCURSORs are not polymorphic */

#endif

typedef DWORD COLORREF;

typedef DWORD *LPCOLORREF;

#define HFILE_ERROR ((HFILE)-1)

typedef struct tagRECT

{

LONG left;

LONG top;

LONG right;

LONG bottom;

} RECT, *PRECT, NEAR *NPRECT, FAR *LPRECT;

typedef const RECT FAR* LPCRECT;

typedef struct _RECTL /* rcl */

{

LONG left;

LONG top;

LONG right;

LONG bottom;

} RECTL, *PRECTL, *LPRECTL;

typedef const RECTL FAR* LPCRECTL;

typedef struct tagPOINT

{

LONG x;

LONG y;

} POINT, *PPOINT, NEAR *NPPOINT, FAR *LPPOINT;

typedef struct _POINTL /* ptl */

{

LONG x;

LONG y;

} POINTL, *PPOINTL;

typedef struct tagSIZE

{

LONG cx;

LONG cy;

} SIZE, *PSIZE, *LPSIZE;

typedef SIZE SIZEL;

typedef SIZE *PSIZEL, *LPSIZEL;

typedef struct tagPOINTS

{

#ifndef _MAC

SHORT x;

SHORT y;

#else

SHORT y;

SHORT x;

#endif

} POINTS, *PPOINTS, *LPPOINTS;

//

// File System time stamps are represented with the following structure:

//

typedef struct _FILETIME {

DWORD dwLowDateTime;

DWORD dwHighDateTime;

} FILETIME, *PFILETIME, *LPFILETIME;

#define _FILETIME_

/* mode selections for the device mode function */

#define DM_UPDATE 1

#define DM_COPY 2

#define DM_PROMPT 4

#define DM_MODIFY 8

#define DM_IN_BUFFER DM_MODIFY

#define DM_IN_PROMPT DM_PROMPT

#define DM_OUT_BUFFER DM_COPY

#define DM_OUT_DEFAULT DM_UPDATE

/* device capabilities indices */

#define DC_FIELDS 1

#define DC_PAPERS 2

#define DC_PAPERSIZE 3

#define DC_MINEXTENT 4

#define DC_MAXEXTENT 5

#define DC_BINS 6

#define DC_DUPLEX 7

#define DC_SIZE 8

#define DC_EXTRA 9

#define DC_VERSION 10

#define DC_DRIVER 11

#define DC_BINNAMES 12

#define DC_ENUMRESOLUTIONS 13

#define DC_FILEDEPENDENCIES 14

#define DC_TRUETYPE 15

#define DC_PAPERNAMES 16

#define DC_ORIENTATION 17

#define DC_COPIES 18

#ifdef __cplusplus

}

#endif

#endif /* _WINDEF_ */
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: