📄 windef.h
字号:
typedef WIN_BOOL CALLBACK (*PROPENUMPROCEXA)(HWND,LPCSTR,HANDLE,LPARAM);typedef WIN_BOOL CALLBACK (*PROPENUMPROCEXW)(HWND,LPCWSTR,HANDLE,LPARAM);DECL_WINELIB_TYPE_AW(PROPENUMPROCEX)typedef WIN_BOOL CALLBACK (* TIMEFMT_ENUMPROCA)(LPSTR);typedef WIN_BOOL CALLBACK (* TIMEFMT_ENUMPROCW)(LPWSTR);DECL_WINELIB_TYPE_AW(TIMEFMT_ENUMPROC)typedef VOID CALLBACK (*TIMERPROC)(HWND,UINT,UINT,DWORD);typedef WIN_BOOL CALLBACK (*WNDENUMPROC)(HWND,LPARAM);typedef LRESULT CALLBACK (*WNDPROC)(HWND,UINT,WPARAM,LPARAM);/*----------------------------------------------------------------------------** FIXME: Better isolate Wine's reliance on the xxx16 type definitions.** For now, we just isolate them to make the situation clear.**--------------------------------------------------------------------------*//* * Basic type definitions for 16 bit variations on Windows types. * These types are provided mostly to insure compatibility with * 16 bit windows code. */#ifndef WINE_WINDEF16_H#define WINE_WINDEF16_H#include "windef.h"/* Standard data types */typedef short INT16;typedef unsigned short UINT16;typedef unsigned short WIN_BOOL16;typedef UINT16 HANDLE16;typedef HANDLE16 *LPHANDLE16;typedef UINT16 WPARAM16;typedef INT16 *LPINT16;typedef UINT16 *LPUINT16;#define DECLARE_HANDLE16(a) \ typedef HANDLE16 a##16; \ typedef a##16 *P##a##16; \ typedef a##16 *NP##a##16; \ typedef a##16 *LP##a##16 DECLARE_HANDLE16(HACMDRIVERID);DECLARE_HANDLE16(HACMDRIVER);DECLARE_HANDLE16(HACMOBJ);DECLARE_HANDLE16(HACMSTREAM);DECLARE_HANDLE16(HMETAFILEPICT);DECLARE_HANDLE16(HACCEL);DECLARE_HANDLE16(HBITMAP);DECLARE_HANDLE16(HBRUSH);DECLARE_HANDLE16(HCOLORSPACE);DECLARE_HANDLE16(HCURSOR);DECLARE_HANDLE16(HDC);DECLARE_HANDLE16(HDROP);DECLARE_HANDLE16(HDRVR);DECLARE_HANDLE16(HDWP);DECLARE_HANDLE16(HENHMETAFILE);DECLARE_HANDLE16(HFILE);DECLARE_HANDLE16(HFONT);DECLARE_HANDLE16(HICON);DECLARE_HANDLE16(HINSTANCE);DECLARE_HANDLE16(HKEY);DECLARE_HANDLE16(HMENU);DECLARE_HANDLE16(HMETAFILE);DECLARE_HANDLE16(HMIDI);DECLARE_HANDLE16(HMIDIIN);DECLARE_HANDLE16(HMIDIOUT);DECLARE_HANDLE16(HMIDISTRM);DECLARE_HANDLE16(HMIXER);DECLARE_HANDLE16(HMIXEROBJ);DECLARE_HANDLE16(HMMIO);DECLARE_HANDLE16(HPALETTE);DECLARE_HANDLE16(HPEN);DECLARE_HANDLE16(HQUEUE);DECLARE_HANDLE16(HRGN);DECLARE_HANDLE16(HRSRC);DECLARE_HANDLE16(HTASK);DECLARE_HANDLE16(HWAVE);DECLARE_HANDLE16(HWAVEIN);DECLARE_HANDLE16(HWAVEOUT);DECLARE_HANDLE16(HWINSTA);DECLARE_HANDLE16(HDESK);DECLARE_HANDLE16(HWND);DECLARE_HANDLE16(HKL);DECLARE_HANDLE16(HIC);DECLARE_HANDLE16(HRASCONN);#undef DECLARE_HANDLE16typedef HINSTANCE16 HMODULE16;typedef HANDLE16 HGDIOBJ16;typedef HANDLE16 HGLOBAL16;typedef HANDLE16 HLOCAL16;/* The SIZE structure */typedef struct{ INT16 cx; INT16 cy;} SIZE16, *PSIZE16, *LPSIZE16;/* The POINT structure */typedef struct{ INT16 x; INT16 y;} POINT16, *PPOINT16, *LPPOINT16;/* The RECT structure */typedef struct{ INT16 left; INT16 top; INT16 right; INT16 bottom;} RECT16, *LPRECT16;/* Callback function pointers types */typedef LRESULT CALLBACK (*DRIVERPROC16)(DWORD,HDRVR16,UINT16,LPARAM,LPARAM);typedef WIN_BOOL16 CALLBACK (*DLGPROC16)(HWND16,UINT16,WPARAM16,LPARAM);typedef INT16 CALLBACK (*EDITWORDBREAKPROC16)(LPSTR,INT16,INT16,INT16);typedef LRESULT CALLBACK (*FARPROC16)();typedef INT16 CALLBACK (*PROC16)();typedef WIN_BOOL16 CALLBACK (*GRAYSTRINGPROC16)(HDC16,LPARAM,INT16);typedef LRESULT CALLBACK (*HOOKPROC16)(INT16,WPARAM16,LPARAM);typedef WIN_BOOL16 CALLBACK (*PROPENUMPROC16)(HWND16,SEGPTR,HANDLE16);typedef VOID CALLBACK (*TIMERPROC16)(HWND16,UINT16,UINT16,DWORD);typedef LRESULT CALLBACK (*WNDENUMPROC16)(HWND16,LPARAM);typedef LRESULT CALLBACK (*WNDPROC16)(HWND16,UINT16,WPARAM16,LPARAM);#endif /* WINE_WINDEF16_H *//* Define some empty macros for compatibility with Windows code. *//* Macro for structure packing. */#ifdef __GNUC__#ifndef _EGCS_#define WINE_PACKED __attribute__((packed))#define WINE_UNUSED __attribute__((unused))#define WINE_NORETURN __attribute__((noreturn))#endif#else#define WINE_PACKED /* nothing */#define WINE_UNUSED /* nothing */#define WINE_NORETURN /* nothing */#endif/* Macros to split words and longs. */#define LOBYTE(w) ((BYTE)(WORD)(w))#define HIBYTE(w) ((BYTE)((WORD)(w) >> 8))#define LOWORD(l) ((WORD)(DWORD)(l))#define HIWORD(l) ((WORD)((DWORD)(l) >> 16))#define SLOWORD(l) ((INT16)(LONG)(l))#define SHIWORD(l) ((INT16)((LONG)(l) >> 16))#define MAKEWORD(low,high) ((WORD)(((BYTE)(low)) | ((WORD)((BYTE)(high))) << 8))#define MAKELONG(low,high) ((LONG)(((WORD)(low)) | (((DWORD)((WORD)(high))) << 16)))#define MAKELPARAM(low,high) ((LPARAM)MAKELONG(low,high))#define MAKEWPARAM(low,high) ((WPARAM)MAKELONG(low,high))#define MAKELRESULT(low,high) ((LRESULT)MAKELONG(low,high))#define MAKEINTATOM(atom) ((LPCSTR)MAKELONG((atom),0))#define SELECTOROF(ptr) (HIWORD(ptr))#define OFFSETOF(ptr) (LOWORD(ptr))/* macros to set parts of a DWORD (not in the Windows API) */#define SET_LOWORD(dw,val) ((dw) = ((dw) & 0xffff0000) | LOWORD(val))#define SET_LOBYTE(dw,val) ((dw) = ((dw) & 0xffffff00) | LOBYTE(val))#define SET_HIBYTE(dw,val) ((dw) = ((dw) & 0xffff00ff) | (LOWORD(val) & 0xff00))#define ADD_LOWORD(dw,val) ((dw) = ((dw) & 0xffff0000) | LOWORD((DWORD)(dw)+(val)))/* Macros to access unaligned or wrong-endian WORDs and DWORDs. *//* Note: These macros are semantically broken, at least for wrc. wrc spits out data in the platform's current binary format, *not* in little-endian format. These macros are used throughout the resource code to load and store data to the resources. Since it is unlikely that we'll ever be dealing with little-endian resource data, the byte-swapping nature of these macros has been disabled. Rather than remove the use of these macros from the resource loading code, the macros have simply been disabled. In the future, someone may want to reactivate these macros for other purposes. In that case, the resource code will have to be modified to use different macros. */ #if 1#define PUT_WORD(ptr,w) (*(WORD *)(ptr) = (w))#define GET_WORD(ptr) (*(WORD *)(ptr))#define PUT_DWORD(ptr,dw) (*(DWORD *)(ptr) = (dw))#define GET_DWORD(ptr) (*(DWORD *)(ptr))#else#define PUT_WORD(ptr,w) (*(BYTE *)(ptr) = LOBYTE(w), \ *((BYTE *)(ptr) + 1) = HIBYTE(w))#define GET_WORD(ptr) ((WORD)(*(BYTE *)(ptr) | \ (WORD)(*((BYTE *)(ptr)+1) << 8)))#define PUT_DWORD(ptr,dw) (PUT_WORD((ptr),LOWORD(dw)), \ PUT_WORD((WORD *)(ptr)+1,HIWORD(dw)))#define GET_DWORD(ptr) ((DWORD)(GET_WORD(ptr) | \ ((DWORD)GET_WORD((WORD *)(ptr)+1) << 16)))#endif /* 1 *//* min and max macros */#define __max(a,b) (((a) > (b)) ? (a) : (b))#define __min(a,b) (((a) < (b)) ? (a) : (b))#ifndef max#define max(a,b) (((a) > (b)) ? (a) : (b))#endif#ifndef min#define min(a,b) (((a) < (b)) ? (a) : (b))#endif#ifndef _MAX_PATH#define _MAX_PATH 260#endif#ifndef MAX_PATH#define MAX_PATH 260#endif#ifndef _MAX_DRIVE#define _MAX_DRIVE 3#endif#ifndef _MAX_DIR#define _MAX_DIR 256#endif#ifndef _MAX_FNAME#define _MAX_FNAME 255#endif#ifndef _MAX_EXT#define _MAX_EXT 256#endif#define HFILE_ERROR16 ((HFILE16)-1)#define HFILE_ERROR ((HFILE)-1)/* The SIZE structure */typedef struct tagSIZE{ INT cx; INT cy;} SIZE, *PSIZE, *LPSIZE;typedef SIZE SIZEL, *PSIZEL, *LPSIZEL;#define CONV_SIZE16TO32(s16,s32) \ ((s32)->cx = (INT)(s16)->cx, (s32)->cy = (INT)(s16)->cy)#define CONV_SIZE32TO16(s32,s16) \ ((s16)->cx = (INT16)(s32)->cx, (s16)->cy = (INT16)(s32)->cy)/* The POINT structure */typedef struct tagPOINT{ LONG x; LONG y;} POINT, *PPOINT, *LPPOINT;typedef struct _POINTL{ LONG x; LONG y;} POINTL;#define CONV_POINT16TO32(p16,p32) \ ((p32)->x = (INT)(p16)->x, (p32)->y = (INT)(p16)->y)#define CONV_POINT32TO16(p32,p16) \ ((p16)->x = (INT16)(p32)->x, (p16)->y = (INT16)(p32)->y)#define MAKEPOINT16(l) (*((POINT16 *)&(l)))/* The POINTS structure */typedef struct tagPOINTS{ SHORT x; SHORT y;} POINTS, *PPOINTS, *LPPOINTS;#define MAKEPOINTS(l) (*((POINTS *)&(l)))/* The RECT structure */typedef struct tagRECT{ short left; short top; short right; short bottom;} RECT, *PRECT, *LPRECT;typedef const RECT *LPCRECT;typedef struct tagRECTL{ LONG left; LONG top; LONG right; LONG bottom;} RECTL, *PRECTL, *LPRECTL;typedef const RECTL *LPCRECTL;#define CONV_RECT16TO32(r16,r32) \ ((r32)->left = (INT)(r16)->left, (r32)->top = (INT)(r16)->top, \ (r32)->right = (INT)(r16)->right, (r32)->bottom = (INT)(r16)->bottom)#define CONV_RECT32TO16(r32,r16) \ ((r16)->left = (INT16)(r32)->left, (r16)->top = (INT16)(r32)->top, \ (r16)->right = (INT16)(r32)->right, (r16)->bottom = (INT16)(r32)->bottom)#ifdef __cplusplus}#endif#endif /* WINE_WINDEF_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -