#ifndef _WINUSER_H
#define _WINUSER_H
-#if __GNUC__ >= 3
-#pragma GCC system_header
-#endif
#ifdef __cplusplus
extern "C" {
#endif
+#if !defined(_USER32_)
+#define WINUSERAPI DECLSPEC_IMPORT
+#else
+#define WINUSERAPI
+#endif
+
+
#define WC_DIALOG MAKEINTATOM(0x8002)
#define FALT 16
#define FCONTROL 8
#if(WINVER >= 0x0400)
#define CF_HDROP 15
#define CF_LOCALE 16
-#endif
+#endif
#if(WINVER >= 0x0500)
#define CF_DIBV5 17
-#endif
+#endif
#if(WINVER >= 0x0500)
#define CF_MAX 18
#define CF_GDIOBJFIRST 768
#define CF_GDIOBJLAST 1023
+/* Win32 4.0 messages for IME */
+#define WM_IME_SETCONTEXT 0x0281
+#define WM_IME_NOTIFY 0x0282
+#define WM_IME_CONTROL 0x0283
+#define WM_IME_COMPOSITIONFULL 0x0284
+#define WM_IME_SELECT 0x0285
+#define WM_IME_CHAR 0x0286
+/* Win32 5.0 messages for IME */
+#define WM_IME_REQUEST 0x0288
+
+/* Win32 4.0 messages for IME */
+#define WM_IME_KEYDOWN 0x0290
+#define WM_IME_KEYUP 0x0291
+
+/* Win32 4.0 messages for IME */
+#define WM_IME_STARTCOMPOSITION 0x010d
+#define WM_IME_ENDCOMPOSITION 0x010e
+#define WM_IME_COMPOSITION 0x010f
+#define WM_IME_KEYLAST 0x010f
+
#define HKL_NEXT 1
#define HKL_PREV 0
#define KLF_ACTIVATE 1
#define DSS_UNION 16
#define DSS_DISABLED 32
#define DSS_MONO 128
+#define DSS_HIDEPREFIX 0x0200
+#define DSS_PREFIXONLY 0x0400
#define DSS_RIGHT 0x8000
#define DT_BOTTOM 8
#define DT_CALCRECT 1024
#define DT_VCENTER 4
#define DT_WORDBREAK 16
#define DT_INTERNAL 4096
+#define DT_NOFULLWIDTHCHARBREAK 524288
+#define DT_HIDEPREFIX 1048576
+#define DT_PREFIXONLY 2097152
#define WB_ISDELIMITER 2
#define WB_LEFT 0
#define WB_RIGHT 1
#define CS_BYTEALIGNCLIENT 4096
#define CS_BYTEALIGNWINDOW 8192
#define CS_KEYCVTWINDOW 4
-#define CS_NOKEYCVT 256
+#define CS_NOKEYCVT 256 // Class Name to Version
#define CS_CLASSDC 64
#define CS_DBLCLKS 8
#define CS_GLOBALCLASS 16384
#define SM_CXMAXIMIZED 61
#define SM_CYMAXIMIZED 62
#define SM_NETWORK 63
-#define LR_DEFAULTSIZE 64
#define SM_CLEANBOOT 67
#define SM_CXDRAG 68
#define SM_CYDRAG 69
#define SM_CYVIRTUALSCREEN 79
#define SM_CMONITORS 80
#define SM_SAMEDISPLAYFORMAT 81
-#if (_WIN32_WINNT < 0x0400)
-#define SM_CMETRICS 76
-#else
-#define SM_CMETRICS 83
-#endif
-#if(_WIN32_WINNT >= 0x0501)
+#if(_WIN32_WINNT >= 0x0500)
+#define SM_IMMENABLED 82
+#endif /* _WIN32_WINNT >= 0x0500 */
+#if (_WIN32_WINNT >= 0x0501)
#define SM_CXFOCUSBORDER 83
#define SM_CYFOCUSBORDER 84
+#define SM_TABLETPC 86
+#define SM_MEDIACENTER 87
+#define SM_STARTER 88
+#define SM_SERVERR2 89
+#endif /* _WIN32_WINNT >= 0x0501 */
+#if (_WIN32_WINNT >= 0x0600)
+#define SM_MOUSEHORIZONTALWHEELPRESENT 91
+#define SM_CXPADDEDBORDER 92
+#endif /* _WIN32_WINNT >= 0x0600 */
+
+#define SM_REMOTESESSION 0x1000
+#if (_WIN32_WINNT >= 0x0501)
+#define SM_SHUTTINGDOWN 0x2000
+#define SM_REMOTECONTROL 0x2001
#endif /* _WIN32_WINNT >= 0x0501 */
-#define SM_REMOTESESSION 0X1000
+
+#if (WINVER < 0x0500) && ((_WIN32_WINNT < 0x0400) || !defined(_WIN32_WINNT))
+#define SM_CMETRICS 76
+#elif (WINVER == 0x500)
+#define SM_CMETRICS 83
+#elif (WINVER == 0x501)
+#define SM_CMETRICS 90
+#else
+#define SM_CMETRICS 93
+#endif
+
#define ARW_BOTTOMLEFT 0
#define ARW_BOTTOMRIGHT 1
#define ARW_HIDE 8
#define LR_COPYDELETEORG 8
#define LR_LOADFROMFILE 16
#define LR_LOADTRANSPARENT 32
+#define LR_DEFAULTSIZE 64
#define LR_LOADREALSIZE 128
#define LR_LOADMAP3DCOLORS 4096
#define LR_CREATEDIBSECTION 8192
#define SMTO_ABORTIFHUNG 2
#define SMTO_BLOCK 1
#define SMTO_NORMAL 0
+#if (WINVER >= 0x0500)
+#define SMTO_NOTIMEOUTIFNOTHUNG 8
+#endif
+#if (WINVER >= 0x0600)
+#define SMTO_ERRORONEXIT 32
+#endif
#define SIF_ALL 23
#define SIF_PAGE 2
#define SIF_POS 4
#endif
+#define PBT_APMQUERYSUSPEND 0x0000
+#define PBT_APMQUERYSTANDBY 0x0001
+#define PBT_APMQUERYSUSPENDFAILED 0x0002
+#define PBT_APMQUERYSTANDBYFAILED 0x0003
+#define PBT_APMSUSPEND 0x0004
+#define PBT_APMSTANDBY 0x0005
+#define PBT_APMRESUMECRITICAL 0x0006
+#define PBT_APMRESUMESUSPEND 0x0007
+#define PBT_APMRESUMESTANDBY 0x0008
+#define PBTF_APMRESUMEFROMFAILURE 0x00000001
+#define PBT_APMBATTERYLOW 0x0009
+#define PBT_APMPOWERSTATUSCHANGE 0x000A
+#define PBT_APMOEMEVENT 0x000B
+#define PBT_APMRESUMEAUTOMATIC 0x0012
+
#define WM_CHAR 258
#define WM_CHARTOITEM 47
#define WM_CHILDACTIVATE 34
#define WM_MEASUREITEM 44
#if (WINVER >= 0x0500)
#define WM_MENURBUTTONUP 290
+#define WM_UNINITMENUPOPUP 293
#endif
#define WM_MENUCHAR 288
#define WM_MENUCOMMAND 294
#define WM_TCARD 82
#define WM_TIMECHANGE 30
#define WM_TIMER 275
-#define WM_SYSTIMER 280
#define WM_UNDO 772
#define WM_USER 1024
#define WM_USERCHANGED 84
#define WM_KEYLAST 264
#define WM_SYNCPAINT 136
#define WM_MOUSEACTIVATE 33
+#define WM_MOUSEFIRST 512
#define WM_MOUSEMOVE 512
#define WM_LBUTTONDOWN 513
#define WM_LBUTTONUP 514
#define WM_MBUTTONDOWN 519
#define WM_MBUTTONUP 520
#define WM_MBUTTONDBLCLK 521
+#if (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400)
#define WM_MOUSEWHEEL 522
-#define WM_MOUSEFIRST 512
+#endif
#if (_WIN32_WINNT >= 0x0500)
#define WM_XBUTTONDOWN 523
#define WM_XBUTTONUP 524
#define WM_XBUTTONDBLCLK 525
+#endif
+#if (_WIN32_WINNT >= 0x0500)
#define WM_MOUSELAST 525
+#elif (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400)
+#define WM_MOUSELAST 522
+#else
+#define WM_MOUSELAST 521
#endif
#define WM_MOUSEHOVER 0x2A1
#define WM_MOUSELEAVE 0x2A3
#define WM_CHANGEUISTATE 295
#define WM_UPDATEUISTATE 296
#define WM_QUERYUISTATE 297
-#define UIS_SET 1
-#define UIS_CLEAR 2
-#define UIS_INITIALIZE 3
-#define UISF_HIDEFOCUS 1
-#define UISF_HIDEACCEL 2
-#if(_WIN32_WINNT >= 0x0501)
-#define UISF_ACTIVE 4
-#endif /* _WIN32_WINNT >= 0x0501 */
#endif /* _WIN32_WINNT >= 0x0500 */
#endif /* _WIN32_WCE */
#define BM_CLICK 245
#define LB_GETITEMDATA 409
#define LB_GETITEMHEIGHT 417
#define LB_GETITEMRECT 408
+#define LB_GETLISTBOXINFO 434
#define LB_GETLOCALE 422
#define LB_GETSEL 391
#define LB_GETSELCOUNT 400
#define DCX_EXCLUDERGN 64
#define DCX_INTERSECTRGN 128
#define DCX_VALIDATE 0x200000
+#define DCX_EXCLUDEUPDATE 0x100
#define GMDI_GOINTOPOPUPS 2
#define GMDI_USEDISABLED 1
#define FKF_AVAILABLE 2
#define VK_NONAME 0xFC
#define VK_PA1 0xFD
#define VK_OEM_CLEAR 0xFE
+
+/* MapVirtualKey translation types */
+#define MAPVK_VK_TO_VSC 0
+#define MAPVK_VSC_TO_VK 1
+#define MAPVK_VK_TO_CHAR 2
+#define MAPVK_VSC_TO_VK_EX 3
+#define MAPVK_VK_TO_VSC_EX 4
+
#define TME_HOVER 1
#define TME_LEAVE 2
#define TME_NONCLIENT 0x00000010
#define HBMMENU_POPUP_RESTORE ((HBITMAP)9)
#define HBMMENU_POPUP_MAXIMIZE ((HBITMAP)10)
#define HBMMENU_POPUP_MINIMIZE ((HBITMAP)11)
-#define MOD_ALT 1
-#define MOD_CONTROL 2
-#define MOD_SHIFT 4
-#define MOD_WIN 8
-#define MOD_IGNORE_ALL_MODIFIER 1024
-#define MOD_ON_KEYUP 2048
-#define MOD_RIGHT 16384
-#define MOD_LEFT 32768
+#define MOD_ALT 0x0001
+#define MOD_CONTROL 0x0002
+#define MOD_SHIFT 0x0004
+#define MOD_WIN 0x0008
#define LLKHF_EXTENDED 0x00000001
#define LLKHF_INJECTED 0x00000010
#define LLKHF_ALTDOWN 0x00000020
#define OBJID_CURSOR 0xFFFFFFF7
#define OBJID_ALERT 0xFFFFFFF6
#define OBJID_SOUND 0xFFFFFFF5
+#define OBJID_QUERYCLASSNAMEIDX 0xFFFFFFF4
+#define OBJID_NATIVEOM 0xFFFFFF0
#define GUI_CARETBLINKING 0x00000001
#define GUI_INMOVESIZE 0x00000002
#define GUI_INMENUMODE 0x00000004
#define LWA_COLORKEY 1
#define LWA_ALPHA 2
#endif
+#define ULW_COLORKEY 0x00000001
+#define ULW_ALPHA 0x00000002
+#define ULW_OPAQUE 0x00000004
+#define ULW_EX_NORESIZE 0x00000008
#define GA_PARENT 1
#define GA_ROOT 2
#define GA_ROOTOWNER 3
#define RIM_TYPEMOUSE 0x00000000
#define RIM_TYPEKEYBOARD 0x00000001
#define RIM_TYPEHID 0x00000002
-#define MOUSE_MOVE_RELATIVE 0x00000000
-#define MOUSE_MOVE_ABSOLUTE 0x00000001
-#define MOUSE_VIRTUAL_DESKTOP 0x00000002
-#define MOUSE_ATTRIBUTES_CHANGED 0x00000004
+#define MOUSE_MOVE_RELATIVE 0
+#define MOUSE_MOVE_ABSOLUTE 1
+#define MOUSE_VIRTUAL_DESKTOP 0x02
+#define MOUSE_ATTRIBUTES_CHANGED 0x04
#define RI_MOUSE_LEFT_BUTTON_DOWN 0x0001
#define RI_MOUSE_LEFT_BUTTON_UP 0x0002
#define RI_MOUSE_RIGHT_BUTTON_DOWN 0x0004
WPARAM wParam;
DWORD message;
HWND hwnd;
-} CWPRETSTRUCT;
+} CWPRETSTRUCT,*PCWPRETSTRUCT, *LPCWPRETSTRUCT;
typedef struct tagCWPSTRUCT {
LPARAM lParam;
WPARAM wParam;
short cx;
short cy;
} DLGTEMPLATE,*LPDLGTEMPLATE,*LPDLGTEMPLATEA,*LPDLGTEMPLATEW;
-typedef const DLGTEMPLATE *LPCDLGTEMPLATE;
typedef const DLGTEMPLATE *LPCDLGTEMPLATEA;
typedef const DLGTEMPLATE *LPCDLGTEMPLATEW;
#ifdef UNICODE
DWORD iDelayMSec;
DWORD iRepeatMSec;
DWORD iBounceMSec;
-} FILTERKEYS;
+} FILTERKEYS, *LPFILTERKEYS;
typedef struct tagHIGHCONTRASTA {
UINT cbSize;
DWORD dwFlags;
DWORD dwFlags;
LPWSTR lpszDefaultScheme;
} HIGHCONTRASTW,*LPHIGHCONTRASTW;
-#ifndef NOGDI
+#if defined(_WINGDI_) && !defined(NOGDI)
typedef struct tagICONMETRICSA {
UINT cbSize;
int iHorzSpacing;
DWORD dwReserved1;
DWORD dwReserved2;
} MOUSEKEYS,*LPMOUSEKEYS;
-#ifndef NOGDI
+#if defined(_WINGDI_) && !defined(NOGDI)
typedef struct tagNONCLIENTMETRICSA {
UINT cbSize;
int iBorderWidth;
typedef struct tagTOGGLEKEYS {
DWORD cbSize;
DWORD dwFlags;
-} TOGGLEKEYS;
+} TOGGLEKEYS, *LPTOGGLEKEYS;
typedef struct tagMOUSEHOOKSTRUCT {
POINT pt;
HWND hwnd;
UINT wHitTestCode;
DWORD dwExtraInfo;
} MOUSEHOOKSTRUCT,*LPMOUSEHOOKSTRUCT,*PMOUSEHOOKSTRUCT;
+#if ( _WIN32_WINNT >= 0x0500 )
+#ifdef __cplusplus
+typedef struct tagMOUSEHOOKSTRUCTEX : public tagMOUSEHOOKSTRUCT
+{
+ DWORD mouseData;
+} MOUSEHOOKSTRUCTEX, *LPMOUSEHOOKSTRUCTEX, *PMOUSEHOOKSTRUCTEX;
+#else
+typedef struct tagMOUSEHOOKSTRUCTEX
+{
+ MOUSEHOOKSTRUCT MOUSEHOOKSTRUCT;
+ DWORD mouseData;
+} MOUSEHOOKSTRUCTEX, *LPMOUSEHOOKSTRUCTEX, *PMOUSEHOOKSTRUCTEX;
+#endif
+#endif
typedef struct tagTRACKMOUSEEVENT {
DWORD cbSize;
DWORD dwFlags;
LRESULT WINAPI CallWindowProcW(WNDPROC,HWND,UINT,WPARAM,LPARAM);
WORD WINAPI CascadeWindows(HWND,UINT,LPCRECT,UINT,const HWND*);
BOOL WINAPI ChangeClipboardChain(HWND,HWND);
-#ifndef NOGDI
+#if defined(_WINGDI_) && !defined(NOGDI)
LONG WINAPI ChangeDisplaySettingsA(PDEVMODEA,DWORD);
LONG WINAPI ChangeDisplaySettingsW(PDEVMODEW,DWORD);
LONG WINAPI ChangeDisplaySettingsExA(LPCSTR,LPDEVMODEA,HWND,DWORD,LPVOID);
HACCEL WINAPI CreateAcceleratorTableW(LPACCEL,int);
BOOL WINAPI CreateCaret(HWND,HBITMAP,int,int);
HCURSOR WINAPI CreateCursor(HINSTANCE,int,int,int,int,PCVOID,PCVOID);
-#ifndef NOGDI
+#if defined(_WINGDI_) && !defined(NOGDI)
HDESK WINAPI CreateDesktopA(LPCSTR,LPCSTR,LPDEVMODEA,DWORD,ACCESS_MASK,LPSECURITY_ATTRIBUTES);
HDESK WINAPI CreateDesktopW(LPCWSTR,LPCWSTR,LPDEVMODEW,DWORD,ACCESS_MASK,LPSECURITY_ATTRIBUTES);
#endif
BOOL WINAPI EnumDesktopsW(HWINSTA,DESKTOPENUMPROCW,LPARAM);
BOOL WINAPI EnumDesktopWindows(HDESK,WNDENUMPROC,LPARAM);
BOOL WINAPI EnumDisplayMonitors(HDC,LPCRECT,MONITORENUMPROC,LPARAM);
-#ifndef NOGDI
+#if defined(_WINGDI_) && !defined(NOGDI)
BOOL WINAPI EnumDisplaySettingsA(LPCSTR,DWORD,PDEVMODEA);
BOOL WINAPI EnumDisplaySettingsW(LPCWSTR,DWORD,PDEVMODEW);
#if (_WIN32_WINNT >= 0x0500 || _WIN32_WINDOWS >= 0x0410)
int WINAPI SetScrollPos(HWND,int,int,BOOL);
BOOL WINAPI SetScrollRange(HWND,int,int,int,BOOL);
BOOL WINAPI SetSysColors(int,const INT *,const COLORREF *);
-HANDLE WINAPI SetSysColorsTemp(const COLORREF *, const HBRUSH *, int);
+DWORD WINAPI SetSysColorsTemp(const COLORREF *, const HBRUSH *, DWORD);
#define SetSysModalWindow(h) (NULL)
BOOL WINAPI SetSystemCursor(HCURSOR,DWORD);
BOOL WINAPI SetThreadDesktop(HDESK);
#endif
#if (_WIN32_WINNT >= 0x0500)
BOOL WINAPI SetLayeredWindowAttributes(HWND,COLORREF,BYTE,DWORD);
-#ifndef NOGDI
+#if defined(_WINGDI_) && !defined(NOGDI)
BOOL WINAPI UpdateLayeredWindow(HWND,HDC,POINT*,SIZE*,HDC,POINT*,COLORREF,BLENDFUNCTION*,DWORD);
+typedef struct tagUPDATELAYEREDWINDOWINFO
+{
+ DWORD cbSize;
+ HDC hdcDst;
+ POINT CONST* pptDst;
+ SIZE CONST* psize;
+ HDC hdcSrc;
+ POINT CONST* pptSrc;
+ COLORREF crKey;
+ BLENDFUNCTION CONST* pblend;
+ DWORD dwFlags;
+ RECT CONST* prcDirty;
+} UPDATELAYEREDWINDOWINFO, *PUPDATELAYEREDWINDOWINFO;
+BOOL WINAPI UpdateLayeredWindowIndirect(HWND,UPDATELAYEREDWINDOWINFO CONST*);
#endif
#endif
#if (_WIN32_WINNT >= 0x0501)
#define WinHelp WinHelpA
#define wsprintf wsprintfA
#define wvsprintf wvsprintfA
-#ifndef NOGDI
+#if defined(_WINGDI_) && !defined(NOGDI)
typedef ICONMETRICSA ICONMETRICS,*LPICONMETRICS;
typedef NONCLIENTMETRICSA NONCLIENTMETRICS,*LPNONCLIENTMETRICS;
#define ChangeDisplaySettings ChangeDisplaySettingsA