/* * Basic types definitions * * Copyright 1996 Alexandre Julliard * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #ifndef _WINDEF_ #define _WINDEF_ #include #ifndef WINVER #define WINVER 0x0500 #endif #ifdef __cplusplus extern "C" { #endif /* Integer types */ typedef DWORD COLORREF, *LPCOLORREF; /* Handle types */ typedef int HFILE; DECLARE_HANDLE(DPI_AWARENESS_CONTEXT); DECLARE_HANDLE(HACCEL); DECLARE_HANDLE(HBITMAP); DECLARE_HANDLE(HBRUSH); DECLARE_HANDLE(HCOLORSPACE); DECLARE_HANDLE(HDC); DECLARE_HANDLE(HDESK); DECLARE_HANDLE(HENHMETAFILE); DECLARE_HANDLE(HFONT); DECLARE_HANDLE(HGLRC); DECLARE_HANDLE(HHOOK); DECLARE_HANDLE(HICON); DECLARE_HANDLE(HMENU); DECLARE_HANDLE(HMONITOR); DECLARE_HANDLE(HPALETTE); DECLARE_HANDLE(HPEN); DECLARE_HANDLE(HWINEVENTHOOK); DECLARE_HANDLE(HWND); /* Handle types that must remain interchangeable even with strict on */ typedef HINSTANCE HMODULE; typedef HANDLE HGDIOBJ; typedef HANDLE HGLOBAL; typedef HANDLE HLOCAL; typedef HANDLE GLOBALHANDLE; typedef HANDLE LOCALHANDLE; typedef HICON HCURSOR; /* Callback function pointers types */ #ifndef WINE_NO_STRICT_PROTOTYPES typedef INT_PTR (CALLBACK *FARPROC)(void); typedef INT_PTR (CALLBACK *NEARPROC)(void); typedef INT_PTR (CALLBACK *PROC)(void); #else typedef INT_PTR (CALLBACK *FARPROC)(); typedef INT_PTR (CALLBACK *NEARPROC)(); typedef INT_PTR (CALLBACK *PROC)(); #endif /* Macros to split words and longs. */ #define LOBYTE(w) ((BYTE)((DWORD_PTR)(w) & 0xFF)) #define HIBYTE(w) ((BYTE)((DWORD_PTR)(w) >> 8)) #define LOWORD(l) ((WORD)((DWORD_PTR)(l) & 0xFFFF)) #define HIWORD(l) ((WORD)((DWORD_PTR)(l) >> 16)) #define MAKEWORD(low,high) ((WORD)(((BYTE)((DWORD_PTR)(low) & 0xFF)) | ((WORD)((BYTE)((DWORD_PTR)(high) & 0xFF))) << 8)) #define MAKELONG(low,high) ((LONG)(((WORD)((DWORD_PTR)(low) & 0xFFFF)) | ((DWORD)((WORD)((DWORD_PTR)(high) & 0xFFFF))) << 16)) /* min and max macros */ #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 */ #ifdef MAX_PATH /* Work-around for Mingw */ #undef MAX_PATH #endif /* MAX_PATH */ #define MAX_PATH 260 #define HFILE_ERROR ((HFILE)-1) /* The SIZE structure */ typedef struct tagSIZE { LONG cx; LONG cy; } SIZE, *PSIZE, *LPSIZE; typedef SIZE SIZEL, *PSIZEL, *LPSIZEL; /* The POINT structure */ typedef struct tagPOINT { LONG x; LONG y; } POINT, *PPOINT, *LPPOINT; typedef struct _POINTL { LONG x; LONG y; } POINTL, *PPOINTL; /* The POINTS structure */ typedef struct tagPOINTS { SHORT x; SHORT y; } POINTS, *PPOINTS, *LPPOINTS; /* The RECT structure */ typedef struct tagRECT { LONG left; LONG top; LONG right; LONG bottom; } RECT, *PRECT, *LPRECT; typedef const RECT *LPCRECT; typedef struct _RECTL { LONG left; LONG top; LONG right; LONG bottom; } RECTL, *PRECTL, *LPRECTL; typedef const RECTL *LPCRECTL; typedef struct APP_LOCAL_DEVICE_ID { BYTE value[32]; } APP_LOCAL_DEVICE_ID; /* DPI awareness */ typedef enum DPI_AWARENESS { DPI_AWARENESS_INVALID = -1, DPI_AWARENESS_UNAWARE = 0, DPI_AWARENESS_SYSTEM_AWARE, DPI_AWARENESS_PER_MONITOR_AWARE } DPI_AWARENESS; #define DPI_AWARENESS_CONTEXT_UNAWARE ((DPI_AWARENESS_CONTEXT)-1) #define DPI_AWARENESS_CONTEXT_SYSTEM_AWARE ((DPI_AWARENESS_CONTEXT)-2) #define DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE ((DPI_AWARENESS_CONTEXT)-3) #define DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2 ((DPI_AWARENESS_CONTEXT)-4) #define DPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED ((DPI_AWARENESS_CONTEXT)-5) #ifdef __cplusplus } #endif typedef enum { DPI_HOSTING_BEHAVIOR_INVALID = -1, DPI_HOSTING_BEHAVIOR_DEFAULT = 0, DPI_HOSTING_BEHAVIOR_MIXED = 1 } DPI_HOSTING_BEHAVIOR; #endif /* _WINDEF_ */