头文件WinDef.h

文件路径为:C:\Program Files\Microsoft SDKs\Windows\v7.0A\Include

通过此文件可以得知:

1、IN和OUT只是个宏,目的是表示参数的意义,为了方便阅读理解函数的意思。

2、标准C++数据类型与Windows数据类型区别

WORD:16位无符号整形数据
    DWORD:32位无符号整型数据(DWORD32)
    DWORD64:64位无符号整型数据
    INT:32位有符号整型数据类型
    INT_PTR:指向INT数据类型的指针类型
    INT32:32位符号整型
    INT64:64位符号整型
    UINT:无符号INT
    LONG:32位符号整型(LONG32)
    ULONG:无符号LONG
    LONGLONG:64位符号整型(LONG64)
    SHORT:无符号短整型(16位)

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;


3、函数调用方式

#define CALLBACK    __stdcall
 #define WINAPI      __stdcall
 #define WINAPIV     __cdecl
 #define APIENTRY    WINAPI
 #define APIPRIVATE  __stdcall
 #define PASCAL      __stdcall

4、

#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))	//提取16位值中低位字节
 #define LOBYTE(w)           ((BYTE)(((DWORD_PTR)(w)) & 0xff))			//提取16位值中高位字节

全部源代码如下:

/****************************************************************************
 *                                                                           *
 * 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_ */
 
 
 
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 关于看雪windef.h的下载,可能会有很多人提出疑问。其实,看雪windef.h是一个用于Windows操作系统的文件,包含了一些常用的宏定义和数据结构的定义。这个文件的作用非常重要,许多Windows编程都需要使用到该文件。因此,如果需要进行Windows相关的编程开发,下载一个看雪windef.h是非常有必要的。 为了下载看雪windef.h,首先需要通过搜索引擎查找该文件的下载地址。在下载过程中,需要注意一些安全问题,尽量在官方网站或权威的第三方网站下载,以免下载到恶意软件等危害性文件。下载完毕后,需要将文件保存到合适的目录,并在需要调用该文件的程序中进行引用,以便于使用其定义的宏定义和数据结构。 总之,看雪windef.h的下载虽然并没有太多难点,但需要注意一定的安全性问题,同时也需要理解该文件的作用及其应用场景,以便更好地使用该文件进行Windows编程。 ### 回答2: 雪 windef.h 是一个 C++ 编程语言的文件,它是 Windows 操作系统的一部分,被广泛用于开发 Windows 应用程序。该文件包含了一些重要的宏定义和数据类型,如 BYTE 、WORD、DWORD、CHAR、SHORT、INT 等,这些宏定义和数据类型用于在程序中定义各种变量和数据。此外,windef.h 还包含了一些常用的 API 声明和结构体定义,如 POINT、RECT、SIZE 等。 通过下载和引用雪 windef.h 文件,程序员可以轻松地编写 Windows 应用程序和系统级驱动程序。使用这个文件的一个好处是,它可以提高代码的可读性和可移植性。由于 windef.h 定义了许多与平台无关的数据类型和宏定义,因此编写的代码可以跨平台运行,而不必担心与底层硬件和操作系统的兼容性问题。 总之,如果你计划在 Windows 平台上开发应用程序或系统驱动程序,那么雪 windef.h 文件是必不可少的工具之一。下载并正确使用该文件可以提高你的编程效率和代码质量。 ### 回答3: 看雪WinDef.h是一个C++文件,包含了一些常用的基础数据类型及宏定义,是Windows编程中常用的文件之一。 WinDef.h中定义了一些基础类型,如BOOL、BYTE、WORD、DWORD、INT、LONG等,以及一些常用的宏定义,如TRUE、FALSE、NULL等,这些定义都为Windows编程提供了便利。 同时,WinDef.h中还定义了一些与Windows GUI编程相关的内容,如:HWND、HINSTANCE、HICON、HDC、RECT等,这些定义常用于创建窗口、画图等操作中。 对于Windows编程的开发者而言,熟练掌握WinDef.h的使用方法可以提高开发效率,简化程序代码的编写,快速实现应用程序的功能。 总之,看雪WinDef.h是Windows编程中必不可少的文件之一,具有非常重要的作用,开发者需要学会并掌握其用法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值