- fix a typo
[reactos.git] / reactos / include / psdk / winuser.h
index 925c008..7976f5b 100644 (file)
@@ -1,13 +1,17 @@
 #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
@@ -54,6 +58,8 @@ extern "C" {
 #define HCBT_KEYSKIPPED        7
 #define HCBT_SYSCOMMAND        8
 #define HCBT_SETFOCUS  9
+
+/* Predefined Clipboard Formats */
 #define CF_TEXT        1
 #define CF_BITMAP      2
 #define CF_METAFILEPICT        3
@@ -68,9 +74,24 @@ extern "C" {
 #define CF_WAVE        12
 #define CF_UNICODETEXT 13
 #define CF_ENHMETAFILE 14
-#define CF_HDROP       15
-#define CF_LOCALE      16
-#define CF_MAX 17
+
+#if(WINVER >= 0x0400)
+#define CF_HDROP 15
+#define CF_LOCALE 16
+#endif
+
+#if(WINVER >= 0x0500)
+#define CF_DIBV5 17
+#endif
+
+#if(WINVER >= 0x0500)
+#define CF_MAX 18
+#elif(WINVER >= 0x0400)
+#define CF_MAX 17
+#else
+#define CF_MAX 15
+#endif
+
 #define CF_OWNERDISPLAY        128
 #define CF_DSPTEXT     129
 #define CF_DSPBITMAP   130
@@ -80,6 +101,27 @@ extern "C" {
 #define CF_PRIVATELAST 767
 #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
@@ -89,7 +131,16 @@ extern "C" {
 #define KLF_REPLACELANG        16
 #define KLF_NOTELLSHELL        128
 #define KLF_SETFORPROCESS      256
+#if (_WIN32_WINNT >= 0x0500)
+#define KLF_SHIFTLOCK  65535
+#define KLF_RESET 0x40000000
+#endif  /*(_WIN32_WINNT >= 0x0500) */
 #define KL_NAMELENGTH 9
+#if (WINVER >= 0x0500)
+#define INPUTLANGCHANGE_BACKWARD   4
+#define INPUTLANGCHANGE_FORWARD    2
+#define INPUTLANGCHANGE_SYSCHARSET 1
+#endif /* (WINVER >= 0x0500) */
 #define MF_ENABLED     0
 #define MF_GRAYED      1
 #define MF_DISABLED    2
@@ -487,6 +538,8 @@ extern "C" {
 #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
@@ -509,6 +562,9 @@ extern "C" {
 #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
@@ -540,8 +596,8 @@ extern "C" {
 #define SB_BOTTOM      7
 #define SB_TOP 6
 #define IS_INTRESOURCE(i) (((ULONG_PTR)(i) >> 16) == 0)
-#define MAKEINTRESOURCEA(i) (LPSTR)((DWORD)((WORD)(i)))
-#define MAKEINTRESOURCEW(i) (LPWSTR)((DWORD)((WORD)(i)))
+#define MAKEINTRESOURCEA(i) (LPSTR)((ULONG_PTR)((WORD)(i)))
+#define MAKEINTRESOURCEW(i) (LPWSTR)((ULONG_PTR)((WORD)(i)))
 #ifndef XFree86Server
 # define RT_CURSOR MAKEINTRESOURCE(1)
 # define RT_FONT MAKEINTRESOURCE(8)
@@ -587,7 +643,7 @@ extern "C" {
 #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
@@ -947,7 +1003,6 @@ extern "C" {
 #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
@@ -963,16 +1018,38 @@ extern "C" {
 #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 */
-#define SM_REMOTESESSION 0X1000
+#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 */
+
+#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
@@ -993,6 +1070,7 @@ extern "C" {
 #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
@@ -1112,6 +1190,12 @@ extern "C" {
 #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
@@ -1133,192 +1217,302 @@ extern "C" {
 #define SWP_NOSENDCHANGING 1024
 #define SWP_DEFERERASE 8192
 #define SWP_ASYNCWINDOWPOS  16384
+
+#define HSHELL_WINDOWCREATED 1
+#define HSHELL_WINDOWDESTROYED 2
 #define HSHELL_ACTIVATESHELLWINDOW 3
+#if(WINVER >= 0x0400)
+#define HSHELL_WINDOWACTIVATED 4
 #define HSHELL_GETMINRECT 5
-#define HSHELL_LANGUAGE 8
 #define HSHELL_REDRAW 6
 #define HSHELL_TASKMAN 7
-#define HSHELL_WINDOWACTIVATED 4
-#define HSHELL_WINDOWCREATED 1
-#define HSHELL_WINDOWDESTROYED 2
-#define SPI_GETACCESSTIMEOUT 60
-#define SPI_GETACTIVEWNDTRKTIMEOUT 8194
-#define SPI_GETANIMATION 72
-#define SPI_GETBEEP 1
-#define SPI_GETBORDER 5
-#define SPI_GETDEFAULTINPUTLANG 89
-#define SPI_GETDRAGFULLWINDOWS 38
-#define SPI_GETFASTTASKSWITCH 35
-#define SPI_GETFILTERKEYS 50
-#define SPI_GETFONTSMOOTHING 74
-#define SPI_GETGRIDGRANULARITY 18
-#define SPI_GETHIGHCONTRAST 66
-#define SPI_GETICONMETRICS 45
-#define SPI_GETICONTITLELOGFONT 31
-#define SPI_GETICONTITLEWRAP 25
-#define SPI_GETKEYBOARDDELAY 22
-#define SPI_GETKEYBOARDPREF 68
-#define SPI_GETKEYBOARDSPEED 10
-#define SPI_GETLOWPOWERACTIVE 83
-#define SPI_GETLOWPOWERTIMEOUT 79
-#define SPI_GETMENUDROPALIGNMENT 27
-#define SPI_GETMENUSHOWDELAY 106
-#define SPI_GETMINIMIZEDMETRICS 43
-#define SPI_GETMOUSE 3
-#define SPI_GETMOUSEKEYS 54
-#define SPI_GETMOUSEHOVERHEIGHT 100
-#define SPI_GETMOUSEHOVERTIME 102
-#define SPI_GETMOUSEHOVERWIDTH 98
-#define SPI_GETMOUSETRAILS 94
-#define SPI_GETNONCLIENTMETRICS 41
-#define SPI_GETPOWEROFFACTIVE 84
-#define SPI_GETPOWEROFFTIMEOUT 80
-#define SPI_GETSCREENREADER 70
-#define SPI_GETSCREENSAVEACTIVE 16
-#define SPI_GETSCREENSAVETIMEOUT 14
-#define SPI_GETSERIALKEYS 62
-#define SPI_GETSHOWIMEUI 110
-#define SPI_GETSHOWSOUNDS 56
-#define SPI_GETSNAPTODEFBUTTON 95
-#define SPI_GETSOUNDSENTRY 64
-#define SPI_GETSTICKYKEYS 58
-#define SPI_GETTOGGLEKEYS 52
-#define SPI_GETWHEELSCROLLLINES 104
-#define SPI_GETWHEELSCROLLCHARS 108
-#define SPI_GETWINDOWSEXTENSION 92
-#define SPI_GETWORKAREA 48
-#define SPI_ICONHORIZONTALSPACING 13
-#define SPI_ICONVERTICALSPACING 24
-#define SPI_LANGDRIVER 12
-#define SPI_SCREENSAVERRUNNING 97
-#define SPI_SETACCESSTIMEOUT 61
-#define SPI_SETACTIVEWINDOWTRACKING 4097
-#define SPI_SETACTIVEWNDTRKZORDER 4109
-#define SPI_SETACTIVEWNDTRKTIMEOUT 8195
-#define SPI_SETANIMATION 73
-#define SPI_SETBEEP 2
-#define SPI_SETBORDER 6
-#define SPI_SETDEFAULTINPUTLANG 90
-#define SPI_SETDESKPATTERN 21
-#define SPI_SETDESKWALLPAPER 20
-#define SPI_SETDOUBLECLICKTIME 32
-#define SPI_SETDOUBLECLKHEIGHT 30
-#define SPI_SETDOUBLECLKWIDTH 29
-#define SPI_SETDRAGFULLWINDOWS 37
-#define SPI_SETDRAGHEIGHT 77
-#define SPI_SETDRAGWIDTH 76
-#define SPI_SETFASTTASKSWITCH 36
-#define SPI_SETFILTERKEYS 51
-#define SPI_SETFONTSMOOTHING 75
-#define SPI_SETGRIDGRANULARITY 19
-#define SPI_SETHANDHELD 78
-#define SPI_SETHIGHCONTRAST 67
-#define SPI_SETICONMETRICS 46
-#define SPI_SETICONTITLELOGFONT 34
-#define SPI_SETICONTITLEWRAP 26
-#define SPI_SETKEYBOARDDELAY 23
-#define SPI_SETKEYBOARDPREF 69
-#define SPI_SETKEYBOARDSPEED 11
-#define SPI_SETLANGTOGGLE 91
-#define SPI_SETLOWPOWERACTIVE 85
-#define SPI_SETLOWPOWERTIMEOUT 81
-#define SPI_SETMENUDROPALIGNMENT 28
-#define SPI_SETMENUSHOWDELAY 107
-#define SPI_SETMINIMIZEDMETRICS 44
-#define SPI_SETMOUSE 4
-#define SPI_SETMOUSEBUTTONSWAP 33
-#define SPI_SETMOUSEHOVERHEIGHT 101
-#define SPI_SETMOUSEHOVERTIME 103
-#define SPI_SETMOUSEHOVERWIDTH 99
-#define SPI_SETMOUSEKEYS 55
-#define SPI_SETMOUSETRAILS 93
-#define SPI_SETNONCLIENTMETRICS 42
-#define SPI_SETPENWINDOWS 49
-#define SPI_SETPOWEROFFACTIVE 86
-#define SPI_SETPOWEROFFTIMEOUT 82
-#define SPI_SETSCREENREADER 71
-#define SPI_SETSCREENSAVEACTIVE 17
-#define SPI_SETSCREENSAVERRUNNING 97
-#define SPI_SETSCREENSAVETIMEOUT 15
-#define SPI_SETSERIALKEYS 63
-#define SPI_SETSHOWIMEUI 111
-#define SPI_SETSHOWSOUNDS 57
-#define SPI_SETSNAPTODEFBUTTON 96
-#define SPI_SETSOUNDSENTRY 65
-#define SPI_SETSTICKYKEYS 59
-#define SPI_SETTOGGLEKEYS 53
-#define SPI_SETWHEELSCROLLLINES 105
-#define SPI_SETWORKAREA 47
-#if (WINVER >= 0x0500)
-#define SPI_GETDESKWALLPAPER 115
-#define SPI_GETMOUSESPEED 112
-#define SPI_GETSCREENSAVERRUNNING 114
-#define SPI_GETACTIVEWINDOWTRACKING 0x1000
-#define SPI_GETACTIVEWNDTRKZORDER 0x100C
-#define SPI_GETCARETWIDTH 0x2006
-#define SPI_GETCOMBOBOXANIMATION 0x1004
-#define SPI_GETCURSORSHADOW 0x101A
-#define SPI_GETDROPSHADOW 0x1024
-#define SPI_GETFOREGROUNDFLASHCOUNT 0x2004
-#define SPI_GETFOREGROUNDLOCKTIMEOUT 0x2000
-#define SPI_GETGRADIENTCAPTIONS 0x1008
-#define SPI_GETHOTTRACKING 0x100E
-#define SPI_GETKEYBOARDCUES 0x100A
-#define SPI_GETLISTBOXSMOOTHSCROLLING 0x1006
-#define SPI_GETMENUANIMATION 0x1002
-#define SPI_GETMENUFADE 0x1012
-#define SPI_GETMENUUNDERLINES 0x100A
-#define SPI_GETSELECTIONFADE 0x1014
-#define SPI_GETTOOLTIPANIMATION 0x1016
-#define SPI_GETTOOLTIPFADE 0x1018
-#define SPI_SETCARETWIDTH 0x2007
-#define SPI_SETCOMBOBOXANIMATION 0x1005
-#define SPI_SETCURSORSHADOW 0x101B
-#define SPI_SETDROPSHADOW 0x1025
-#define SPI_SETFOREGROUNDFLASHCOUNT 0x2005
-#define SPI_SETFOREGROUNDLOCKTIMEOUT 0x2001
-#define SPI_SETGRADIENTCAPTIONS 0x1009
-#define SPI_SETHOTTRACKING 0x100F
-#define SPI_SETKEYBOARDCUES 0x100B
-#define SPI_SETLISTBOXSMOOTHSCROLLING 0x1007
-#define SPI_SETMENUANIMATION 0x1003
-#define SPI_SETMENUFADE 0x1013
-#define SPI_SETMENUUNDERLINES 0x100B
-#define SPI_SETMOUSESPEED 113
-#define SPI_SETSELECTIONFADE 0x1015
-#define SPI_SETTOOLTIPANIMATION 0x1017
-#define SPI_SETTOOLTIPFADE 0x1019
-#if (WINVER >= 0x0501)
-#define FE_FONTSMOOTHINGORIENTATIONBGR 0
-#define FE_FONTSMOOTHINGORIENTATIONRGB 1
-#define FE_FONTSMOOTHINGSTANDARD 1
-#define FE_FONTSMOOTHINGCLEARTYPE 2
-#define FE_FONTSMOOTHINGDOCKING 32768
-#define SPI_GETBLOCKSENDINPUTRESETS 0x1026
-#define SPI_SETBLOCKSENDINPUTRESETS 0x1027
-#define SPI_GETUIEFFECTS 0x103E
-#define SPI_SETUIEFFECTS 0x103F
-#define SPI_GETMOUSECLICKLOCK  4126
-#define SPI_SETMOUSECLICKLOCK  4127
-#define SPI_GETMOUSECLICKLOCKTIME 8200
-#define SPI_SETMOUSECLICKLOCKTIME 8201
-#define SPI_GETMOUSESONAR 0x101C
-#define SPI_SETMOUSESONAR 0x101D
-#define SPI_GETMOUSEVANISH 0x1020
-#define SPI_SETMOUSEVANISH 0x1021
-#define SPI_GETFLATMENU 0x1022
-#define SPI_SETFLATMENU 0x1023
-#define SPI_GETFONTSMOOTHINGTYPE 8202
-#define SPI_SETFONTSMOOTHINGTYPE 8203
-#define SPI_GETFONTSMOOTHINGCONTRAST 8204
-#define SPI_SETFONTSMOOTHINGCONTRAST 8205
-#define SPI_GETFOCUSBORDERWIDTH 8206
-#define SPI_SETFOCUSBORDERWIDTH 8207
-#define SPI_GETFOCUSBORDERHEIGHT 8208
-#define SPI_SETFOCUSBORDERHEIGHT 8209
-#define SPI_GETFONTSMOOTHINGORIENTATION 8210
-#define SPI_SETFONTSMOOTHINGORIENTATION 8211
+#define HSHELL_LANGUAGE 8
+#define HSHELL_SYSMENU  9
+#define HSHELL_ENDTASK  10
+#endif /* WINVER >= 0x0400 */
+#if(_WIN32_WINNT >= 0x0500)
+#define HSHELL_ACCESSIBILITYSTATE 11
+#define HSHELL_APPCOMMAND 12
+#endif /* _WIN32_WINNT >= 0x0500 */
+#if(_WIN32_WINNT >= 0x0501)
+#define HSHELL_WINDOWREPLACED 13
+#define HSHELL_WINDOWREPLACING 14
+#endif /* _WIN32_WINNT >= 0x0501 */
+
+#define HSHELL_HIGHBIT          0x8000
+#define HSHELL_FLASH            (HSHELL_REDRAW|HSHELL_HIGHBIT)
+#define HSHELL_RUDEAPPACTIVATED (HSHELL_WINDOWACTIVATED|HSHELL_HIGHBIT)
+
+#if(_WIN32_WINNT >= 0x0500)
+#define APPCOMMAND_BROWSER_BACKWARD 1
+#define APPCOMMAND_BROWSER_FORWARD 2
+#define APPCOMMAND_BROWSER_REFRESH 3
+#define APPCOMMAND_BROWSER_STOP 4
+#define APPCOMMAND_BROWSER_SEARCH 5
+#define APPCOMMAND_BROWSER_FAVORITES 6
+#define APPCOMMAND_BROWSER_HOME 7
+#define APPCOMMAND_VOLUME_MUTE 8
+#define APPCOMMAND_VOLUME_DOWN 9
+#define APPCOMMAND_VOLUME_UP 10
+#define APPCOMMAND_MEDIA_NEXTTRACK 11
+#define APPCOMMAND_MEDIA_PREVIOUSTRACK 12
+#define APPCOMMAND_MEDIA_STOP 13
+#define APPCOMMAND_MEDIA_PLAY_PAUSE 14
+#define APPCOMMAND_LAUNCH_MAIL 15
+#define APPCOMMAND_LAUNCH_MEDIA_SELECT 16
+#define APPCOMMAND_LAUNCH_APP1 17
+#define APPCOMMAND_LAUNCH_APP2 18
+#define APPCOMMAND_BASS_DOWN 19
+#define APPCOMMAND_BASS_BOOST 20
+#define APPCOMMAND_BASS_UP 21
+#define APPCOMMAND_TREBLE_DOWN 22
+#define APPCOMMAND_TREBLE_UP 23
+#if( _WIN32_WINNT >= 0x0501 )
+#define APPCOMMAND_MICROPHONE_VOLUME_MUTE 24
+#define APPCOMMAND_MICROPHONE_VOLUME_DOWN 25
+#define APPCOMMAND_MICROPHONE_VOLUME_UP 26
+#define APPCOMMAND_HELP 27
+#define APPCOMMAND_FIND 28
+#define APPCOMMAND_NEW 29
+#define APPCOMMAND_OPEN 30
+#define APPCOMMAND_CLOSE 31
+#define APPCOMMAND_SAVE 32
+#define APPCOMMAND_PRINT 33
+#define APPCOMMAND_UNDO 34
+#define APPCOMMAND_REDO 35
+#define APPCOMMAND_COPY 36
+#define APPCOMMAND_CUT 37
+#define APPCOMMAND_PASTE 38
+#define APPCOMMAND_REPLY_TO_MAIL 39
+#define APPCOMMAND_FORWARD_MAIL 40
+#define APPCOMMAND_SEND_MAIL 41
+#define APPCOMMAND_SPELL_CHECK 42
+#define APPCOMMAND_DICTATE_OR_COMMAND_CONTROL_TOGGLE 43
+#define APPCOMMAND_MIC_ON_OFF_TOGGLE 44
+#define APPCOMMAND_CORRECTION_LIST 45
+#define APPCOMMAND_MEDIA_PLAY 46
+#define APPCOMMAND_MEDIA_PAUSE 47
+#define APPCOMMAND_MEDIA_RECORD 48
+#define APPCOMMAND_MEDIA_FAST_FORWARD 49
+#define APPCOMMAND_MEDIA_REWIND 50
+#define APPCOMMAND_MEDIA_CHANNEL_UP 51
+#define APPCOMMAND_MEDIA_CHANNEL_DOWN 52
+#endif /* _WIN32_WINNT >= 0x0501 */
+
+#define FAPPCOMMAND_MOUSE   0x8000
+#define FAPPCOMMAND_KEY 0
+#define FAPPCOMMAND_OEM 0x1000
+#define FAPPCOMMAND_MASK    0xf000
+
+#define GET_APPCOMMAND_LPARAM(lParam)   ((SHORT)(HIWORD(lParam) & ~FAPPCOMMAND_MASK))
+#define GET_DEVICE_LPARAM(lParam)   ((WORD)(HIWORD(lParam) & FAPPCOMMAND_MASK))
+#define GET_MOUSEORKEY_LPARAM   GET_DEVICE_LPARAM
+#define GET_FLAGS_LPARAM(lParam)    (LOWORD(lParam))
+#define GET_KEYSTATE_LPARAM(lParam) GET_FLAGS_LPARAM(lParam)
+#endif
+
+
+
+#define SPI_GETBEEP 0x0001
+#define SPI_SETBEEP 0x0002
+#define SPI_GETMOUSE 0x0003
+#define SPI_SETMOUSE 0x0004
+#define SPI_GETBORDER 0x0005
+#define SPI_SETBORDER 0x0006
+#define SPI_GETKEYBOARDSPEED 0x000A
+#define SPI_SETKEYBOARDSPEED 0x000B
+#define SPI_LANGDRIVER 0x000C
+#define SPI_ICONHORIZONTALSPACING 0x000D
+#define SPI_GETSCREENSAVETIMEOUT 0x000E
+#define SPI_SETSCREENSAVETIMEOUT 0x000F
+#define SPI_GETSCREENSAVEACTIVE 0x0010
+#define SPI_SETSCREENSAVEACTIVE 0x0011
+#define SPI_GETGRIDGRANULARITY 0x0012
+#define SPI_SETGRIDGRANULARITY 0x0013
+#define SPI_SETDESKWALLPAPER 0x0014
+#define SPI_SETDESKPATTERN 0x0015
+#define SPI_GETKEYBOARDDELAY 0x0016
+#define SPI_SETKEYBOARDDELAY 0x0017
+#define SPI_ICONVERTICALSPACING 0x0018
+#define SPI_GETICONTITLEWRAP 0x0019
+#define SPI_SETICONTITLEWRAP 0x001A
+#define SPI_GETMENUDROPALIGNMENT 0x001B
+#define SPI_SETMENUDROPALIGNMENT 0x001C
+#define SPI_SETDOUBLECLKWIDTH 0x001D
+#define SPI_SETDOUBLECLKHEIGHT 0x001E
+#define SPI_GETICONTITLELOGFONT 0x001F
+#define SPI_SETDOUBLECLICKTIME 0x0020
+#define SPI_SETMOUSEBUTTONSWAP 0x0021
+#define SPI_SETICONTITLELOGFONT 0x0022
+#define SPI_GETFASTTASKSWITCH 0x0023
+#define SPI_SETFASTTASKSWITCH 0x0024
+#define SPI_GETFILTERKEYS 0x0032
+#define SPI_SETFILTERKEYS 0x0033
+#define SPI_GETTOGGLEKEYS 0x0034
+#define SPI_SETTOGGLEKEYS 0x0035
+#define SPI_GETMOUSEKEYS 0x0036
+#define SPI_SETMOUSEKEYS 0x0037
+#define SPI_GETSHOWSOUNDS 0x0038
+#define SPI_SETSHOWSOUNDS 0x0039
+#define SPI_GETSTICKYKEYS 0x003A
+#define SPI_SETSTICKYKEYS 0x003B
+#define SPI_GETACCESSTIMEOUT 0x003C
+#define SPI_SETACCESSTIMEOUT 0x003D
+#define SPI_GETSOUNDSENTRY 0x0040
+#define SPI_SETSOUNDSENTRY 0x0041
+
+#if(WINVER >= 0x0400)
+    #define SPI_SETDRAGFULLWINDOWS 0x0025
+    #define SPI_GETDRAGFULLWINDOWS 0x0026
+    #define SPI_GETNONCLIENTMETRICS 0x0029
+    #define SPI_SETNONCLIENTMETRICS 0x002A
+    #define SPI_GETMINIMIZEDMETRICS 0x002B
+    #define SPI_SETMINIMIZEDMETRICS 0x002C
+    #define SPI_GETICONMETRICS 0x002D
+    #define SPI_SETICONMETRICS 0x002E
+    #define SPI_SETWORKAREA 0x002F
+    #define SPI_GETWORKAREA 0x0030
+    #define SPI_SETPENWINDOWS 0x0031
+    #define SPI_GETHIGHCONTRAST 0x0042
+    #define SPI_SETHIGHCONTRAST 0x0043
+    #define SPI_GETKEYBOARDPREF 0x0044
+    #define SPI_SETKEYBOARDPREF 0x0045
+    #define SPI_GETSCREENREADER 0x0046
+    #define SPI_SETSCREENREADER 0x0047
+    #define SPI_GETANIMATION 0x0048
+    #define SPI_SETANIMATION 0x0049
+    #define SPI_GETFONTSMOOTHING 0x004A
+    #define SPI_SETFONTSMOOTHING 0x004B
+    #define SPI_SETDRAGWIDTH 0x004C
+    #define SPI_SETDRAGHEIGHT 0x004D
+    #define SPI_SETHANDHELD 0x004E
+    #define SPI_GETLOWPOWERTIMEOUT 0x004F
+    #define SPI_GETPOWEROFFTIMEOUT 0x0050
+    #define SPI_SETLOWPOWERTIMEOUT 0x0051
+    #define SPI_SETPOWEROFFTIMEOUT 0x0052
+    #define SPI_GETLOWPOWERACTIVE 0x0053
+    #define SPI_GETPOWEROFFACTIVE 0x0054
+    #define SPI_SETLOWPOWERACTIVE 0x0055
+    #define SPI_SETPOWEROFFACTIVE 0x0056
+    #define SPI_SETCURSORS 0x0057
+    #define SPI_SETICONS 0x0058
+    #define SPI_GETDEFAULTINPUTLANG 0x0059
+    #define SPI_SETDEFAULTINPUTLANG 0x005A
+    #define SPI_SETLANGTOGGLE 0x005B
+    #define SPI_GETWINDOWSEXTENSION 0x005C
+    #define SPI_SETMOUSETRAILS 0x005D
+    #define SPI_GETMOUSETRAILS 0x005E
+    #define SPI_SCREENSAVERRUNNING 0x0061
+    #define SPI_SETSCREENSAVERRUNNING SPI_SCREENSAVERRUNNING
+    #define SPI_GETSERIALKEYS 0x003E
+    #define SPI_SETSERIALKEYS 0x003F
 #endif
+
+#if(_WIN32_WINNT >= 0x0400)
+    #define SPI_GETSNAPTODEFBUTTON 0x005F
+    #define SPI_SETSNAPTODEFBUTTON 0x0060
+#endif
+
+#if (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400)
+    #define SPI_GETMOUSEHOVERWIDTH 0x0062
+    #define SPI_SETMOUSEHOVERWIDTH 0x0063
+    #define SPI_GETMOUSEHOVERHEIGHT 0x0064
+    #define SPI_SETMOUSEHOVERHEIGHT 0x0065
+    #define SPI_GETMOUSEHOVERTIME 0x0066
+    #define SPI_SETMOUSEHOVERTIME 0x0067
+    #define SPI_GETWHEELSCROLLLINES 0x0068
+    #define SPI_SETWHEELSCROLLLINES 0x0069
+    #define SPI_GETMENUSHOWDELAY 0x006A
+    #define SPI_SETMENUSHOWDELAY 0x006B
+    #define SPI_GETSHOWIMEUI 0x006E
+    #define SPI_SETSHOWIMEUI 0x006F
+    /* Correct ? */
+    #define SPI_GETWHEELSCROLLCHARS 0x006C
+#endif
+
+#if(WINVER >= 0x0500)
+    #define SPI_GETMOUSESPEED 0x0070
+    #define SPI_SETMOUSESPEED 0x0071
+    #define SPI_GETSCREENSAVERRUNNING 0x0072
+    #define SPI_GETDESKWALLPAPER 0x0073
+#endif
+
+#if(WINVER >= 0x0500)
+    #define SPI_GETACTIVEWINDOWTRACKING 0x1000
+    #define SPI_SETACTIVEWINDOWTRACKING 0x1001
+    #define SPI_GETMENUANIMATION 0x1002
+    #define SPI_SETMENUANIMATION 0x1003
+    #define SPI_GETCOMBOBOXANIMATION 0x1004
+    #define SPI_SETCOMBOBOXANIMATION 0x1005
+    #define SPI_GETLISTBOXSMOOTHSCROLLING 0x1006
+    #define SPI_SETLISTBOXSMOOTHSCROLLING 0x1007
+    #define SPI_GETGRADIENTCAPTIONS 0x1008
+    #define SPI_SETGRADIENTCAPTIONS 0x1009
+    #define SPI_GETKEYBOARDCUES 0x100A
+    #define SPI_SETKEYBOARDCUES 0x100B
+    #define SPI_GETMENUUNDERLINES SPI_GETKEYBOARDCUES
+    #define SPI_SETMENUUNDERLINES SPI_SETKEYBOARDCUES
+    #define SPI_GETACTIVEWNDTRKZORDER 0x100C
+    #define SPI_SETACTIVEWNDTRKZORDER 0x100D
+    #define SPI_GETHOTTRACKING 0x100E
+    #define SPI_SETHOTTRACKING 0x100F
+    #define SPI_GETMENUFADE 0x1012
+    #define SPI_SETMENUFADE 0x1013
+    #define SPI_GETSELECTIONFADE 0x1014
+    #define SPI_SETSELECTIONFADE 0x1015
+    #define SPI_GETTOOLTIPANIMATION 0x1016
+    #define SPI_SETTOOLTIPANIMATION 0x1017
+    #define SPI_GETTOOLTIPFADE 0x1018
+    #define SPI_SETTOOLTIPFADE 0x1019
+    #define SPI_GETCURSORSHADOW 0x101A
+    #define SPI_SETCURSORSHADOW 0x101B
+    #define SPI_GETUIEFFECTS 0x103E
+    #define SPI_SETUIEFFECTS 0x103F
+    #define SPI_GETFOREGROUNDLOCKTIMEOUT 0x2000
+    #define SPI_SETFOREGROUNDLOCKTIMEOUT 0x2001
+    #define SPI_GETACTIVEWNDTRKTIMEOUT 0x2002
+    #define SPI_SETACTIVEWNDTRKTIMEOUT 0x2003
+    #define SPI_GETFOREGROUNDFLASHCOUNT 0x2004
+    #define SPI_SETFOREGROUNDFLASHCOUNT 0x2005
+    #define SPI_GETCARETWIDTH 0x2006
+    #define SPI_SETCARETWIDTH 0x2007
+
+    #if(_WIN32_WINNT >= 0x0501)
+        #define SPI_GETMOUSESONAR 0x101C
+        #define SPI_SETMOUSESONAR 0x101D
+        #define SPI_GETMOUSECLICKLOCK 0x101E
+        #define SPI_SETMOUSECLICKLOCK 0x101F
+        #define SPI_GETMOUSEVANISH 0x1020
+        #define SPI_SETMOUSEVANISH 0x1021
+        #define SPI_GETFLATMENU 0x1022
+        #define SPI_SETFLATMENU 0x1023
+        #define SPI_GETDROPSHADOW 0x1024
+        #define SPI_SETDROPSHADOW 0x1025
+        #define SPI_GETBLOCKSENDINPUTRESETS 0x1026
+        #define SPI_SETBLOCKSENDINPUTRESETS 0x1027
+    #endif
+
+    #if(_WIN32_WINNT >= 0x0501)
+        #define SPI_GETMOUSECLICKLOCKTIME 0x2008
+        #define SPI_SETMOUSECLICKLOCKTIME 0x2009
+        #define SPI_GETFONTSMOOTHINGTYPE 0x200A
+        #define SPI_SETFONTSMOOTHINGTYPE 0x200B
+
+        #define SPI_GETFONTSMOOTHINGCONTRAST 0x200C
+        #define SPI_SETFONTSMOOTHINGCONTRAST 0x200D
+        #define SPI_GETFOCUSBORDERWIDTH 0x200E
+        #define SPI_SETFOCUSBORDERWIDTH 0x200F
+        #define SPI_GETFOCUSBORDERHEIGHT 0x2010
+        #define SPI_SETFOCUSBORDERHEIGHT 0x2011
+        #define SPI_GETFONTSMOOTHINGORIENTATION 0x2012
+        #define SPI_SETFONTSMOOTHINGORIENTATION 0x2013
+
+        #define FE_FONTSMOOTHINGSTANDARD 0x0001
+        #define FE_FONTSMOOTHINGCLEARTYPE 0x0002
+        #define FE_FONTSMOOTHINGDOCKING 0x8000
+        #define FE_FONTSMOOTHINGORIENTATIONBGR 0x0000
+        #define FE_FONTSMOOTHINGORIENTATIONRGB 0x0001
+    #endif
 #endif
 
 #define SPIF_UPDATEINIFILE 1
@@ -1355,6 +1549,21 @@ extern "C" {
 
 #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
@@ -1433,8 +1642,10 @@ extern "C" {
 #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_MENUSELECT 287
 #define WM_NEXTMENU 531
 #define WM_MOVE 3
@@ -1512,7 +1723,6 @@ extern "C" {
 #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
@@ -1526,6 +1736,7 @@ extern "C" {
 #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
@@ -1536,13 +1747,20 @@ extern "C" {
 #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
@@ -1559,14 +1777,6 @@ extern "C" {
 #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
@@ -1693,6 +1903,7 @@ extern "C" {
 #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
@@ -1767,6 +1978,7 @@ extern "C" {
 #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
@@ -1985,6 +2197,14 @@ extern "C" {
 #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
@@ -2013,7 +2233,11 @@ extern "C" {
 #define TPM_NONOTIFY 128
 #define TPM_RETURNCMD 256
 #if (_WIN32_WINNT >= 0x0500 || _WIN32_WINDOWS >= 0x0410)
-#define TPM_RECURSE 1
+#define TPM_RECURSE 0x0001
+#define TPM_HORPOSANIMATION 0x0400
+#define TPM_HORNEGANIMATION 0x0800
+#define TPM_VERPOSANIMATION 0x1000
+#define TPM_VERNEGANIMATION 0x2000
 #endif
 #define HELP_COMMAND 0x102
 #define HELP_CONTENTS 3
@@ -2236,14 +2460,10 @@ extern "C" {
 #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
@@ -2281,6 +2501,8 @@ extern "C" {
 #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
@@ -2373,6 +2595,10 @@ extern "C" {
 #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
@@ -2403,10 +2629,10 @@ extern "C" {
 #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
@@ -2589,13 +2815,13 @@ typedef struct tagCWPRETSTRUCT {
        WPARAM wParam;
        DWORD message;
        HWND hwnd;
-} CWPRETSTRUCT;
+} CWPRETSTRUCT,*PCWPRETSTRUCT, *LPCWPRETSTRUCT;
 typedef struct tagCWPSTRUCT {
        LPARAM lParam;
        WPARAM wParam;
        UINT message;
        HWND hwnd;
-} CWPSTRUCT,*PCWPSTRUCT;
+} CWPSTRUCT,*PCWPSTRUCT, *LPCWPSTRUCT;
 typedef struct tagDEBUGHOOKINFO {
        DWORD idThread;
        DWORD idThreadInstaller;
@@ -2629,7 +2855,13 @@ typedef struct {
        short cx;
        short cy;
 } DLGTEMPLATE,*LPDLGTEMPLATE,*LPDLGTEMPLATEA,*LPDLGTEMPLATEW;
-typedef const DLGTEMPLATE *LPCDLGTEMPLATE;
+typedef const DLGTEMPLATE *LPCDLGTEMPLATEA;
+typedef const DLGTEMPLATE *LPCDLGTEMPLATEW;
+#ifdef UNICODE
+typedef LPCDLGTEMPLATEW LPCDLGTEMPLATE;
+#else
+typedef LPCDLGTEMPLATEA LPCDLGTEMPLATE;
+#endif // UNICODE
 #pragma pack(pop)
 typedef struct tagDRAWITEMSTRUCT {
        UINT CtlType;
@@ -2836,7 +3068,7 @@ typedef struct tagFILTERKEYS {
        DWORD iDelayMSec;
        DWORD iRepeatMSec;
        DWORD iBounceMSec;
-} FILTERKEYS;
+} FILTERKEYS, *LPFILTERKEYS;
 typedef struct tagHIGHCONTRASTA {
        UINT cbSize;
        DWORD dwFlags;
@@ -2847,7 +3079,7 @@ typedef struct tagHIGHCONTRASTW {
        DWORD dwFlags;
        LPWSTR lpszDefaultScheme;
 } HIGHCONTRASTW,*LPHIGHCONTRASTW;
-#ifndef NOGDI
+#if defined(_WINGDI_) && !defined(NOGDI)
 typedef struct tagICONMETRICSA {
        UINT cbSize;
        int iHorzSpacing;
@@ -2879,7 +3111,7 @@ typedef struct tagMOUSEKEYS{
        DWORD dwReserved1;
        DWORD dwReserved2;
 } MOUSEKEYS,*LPMOUSEKEYS;
-#ifndef NOGDI
+#if defined(_WINGDI_) && !defined(NOGDI)
 typedef struct tagNONCLIENTMETRICSA {
        UINT cbSize;
        int iBorderWidth;
@@ -2968,13 +3200,27 @@ typedef struct tagSTICKYKEYS {
 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;
@@ -3372,7 +3618,7 @@ LRESULT WINAPI CallWindowProcA(WNDPROC,HWND,UINT,WPARAM,LPARAM);
 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);
@@ -3423,7 +3669,7 @@ HACCEL WINAPI CreateAcceleratorTableA(LPACCEL,int);
 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
@@ -3492,12 +3738,15 @@ BOOL WINAPI DragDetect(HWND,POINT);
 DWORD WINAPI DragObject(HWND,HWND,UINT,DWORD,HCURSOR);
 BOOL WINAPI DrawAnimatedRects(HWND,int,LPCRECT,LPCRECT);
 BOOL WINAPI DrawCaption(HWND,HDC,LPCRECT,UINT);
+BOOL WINAPI DrawCaptionTempA(HWND,HDC,const RECT*,HFONT,HICON,LPCSTR,UINT);
+BOOL WINAPI DrawCaptionTempW(HWND,HDC,const RECT*,HFONT,HICON,LPCWSTR,UINT);
 BOOL WINAPI DrawEdge(HDC,LPRECT,UINT,UINT);
 BOOL WINAPI DrawFocusRect(HDC,LPCRECT);
 BOOL WINAPI DrawFrameControl(HDC,LPRECT,UINT,UINT);
 BOOL WINAPI DrawIcon(HDC,int,int,HICON);
 BOOL WINAPI DrawIconEx(HDC,int,int,HICON,int,int,UINT,HBRUSH,UINT);
 BOOL WINAPI DrawMenuBar(HWND);
+DWORD WINAPI DrawMenuBarTemp(HWND,HDC,LPRECT,HMENU,HFONT);
 BOOL WINAPI DrawStateA(HDC,HBRUSH,DRAWSTATEPROC,LPARAM,WPARAM,int,int,int,int,UINT);
 BOOL WINAPI DrawStateW(HDC,HBRUSH,DRAWSTATEPROC,LPARAM,WPARAM,int,int,int,int,UINT);
 int WINAPI DrawTextA(HDC,LPCSTR,int,LPRECT,UINT);
@@ -3521,7 +3770,7 @@ BOOL WINAPI EnumDesktopsA(HWINSTA,DESKTOPENUMPROCA,LPARAM);
 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)
@@ -3807,6 +4056,9 @@ int WINAPI MessageBoxIndirectA(CONST MSGBOXPARAMSA*);
 int WINAPI MessageBoxIndirectW(CONST MSGBOXPARAMSW*);
 BOOL WINAPI ModifyMenuA(HMENU,UINT,UINT,UINT,LPCSTR);
 BOOL WINAPI ModifyMenuW(HMENU,UINT,UINT,UINT,LPCWSTR);
+HMONITOR WINAPI MonitorFromPoint(POINT,DWORD);
+HMONITOR WINAPI MonitorFromRect(LPCRECT,DWORD);
+HMONITOR WINAPI MonitorFromWindow(HWND,DWORD);
 void WINAPI mouse_event(DWORD,DWORD,DWORD,DWORD,ULONG_PTR);
 BOOL WINAPI MoveWindow(HWND,int,int,int,int,BOOL);
 DWORD WINAPI MsgWaitForMultipleObjects(DWORD,CONST HANDLE*,BOOL,DWORD,DWORD);
@@ -3934,6 +4186,7 @@ int WINAPI SetScrollInfo(HWND,int,LPCSCROLLINFO,BOOL);
 int WINAPI SetScrollPos(HWND,int,int,BOOL);
 BOOL WINAPI SetScrollRange(HWND,int,int,int,BOOL);
 BOOL WINAPI SetSysColors(int,const INT *,const COLORREF *);
+DWORD WINAPI SetSysColorsTemp(const COLORREF *, const HBRUSH *, DWORD);
 #define SetSysModalWindow(h) (NULL)
 BOOL WINAPI SetSystemCursor(HCURSOR,DWORD);
 BOOL WINAPI SetThreadDesktop(HDESK);
@@ -4028,8 +4281,22 @@ BOOL WINAPI LockSetForegroundWindow(UINT);
 #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)
@@ -4096,6 +4363,7 @@ typedef MONITORINFOEXW MONITORINFOEX, *LPMONITORINFOEX;
 #define DlgDirListComboBox DlgDirListComboBoxW
 #define DlgDirSelectComboBoxEx DlgDirSelectComboBoxExW
 #define DlgDirSelectEx DlgDirSelectExW
+#define DrawCaptionTemp DrawCaptionTempW
 #define DrawState DrawStateW
 #define DrawText DrawTextW
 #define DrawTextEx DrawTextExW
@@ -4108,6 +4376,7 @@ typedef MONITORINFOEXW MONITORINFOEX, *LPMONITORINFOEX;
 #define GetClassInfo GetClassInfoW
 #define GetClassInfoEx GetClassInfoExW
 #define GetClassLong GetClassLongW
+#define GetClassLongPtr GetClassLongPtrW
 #define GetClassName GetClassNameW
 #define GetClipboardFormatName GetClipboardFormatNameW
 #define GetDlgItemText GetDlgItemTextW
@@ -4262,6 +4531,7 @@ typedef MONITORINFOEXA MONITORINFOEX, *LPMONITORINFOEX;
 #define DlgDirListComboBox DlgDirListComboBoxA
 #define DlgDirSelectComboBoxEx DlgDirSelectComboBoxExA
 #define DlgDirSelectEx DlgDirSelectExA
+#define DrawCaptionTemp DrawCaptionTempA
 #define DrawState DrawStateA
 #define DrawText DrawTextA
 #define DrawTextEx DrawTextExA
@@ -4274,6 +4544,7 @@ typedef MONITORINFOEXA MONITORINFOEX, *LPMONITORINFOEX;
 #define GetClassInfo GetClassInfoA
 #define GetClassInfoEx GetClassInfoExA
 #define GetClassLong GetClassLongA
+#define GetClassLongPtr GetClassLongPtrA
 #define GetClassName GetClassNameA
 #define GetClipboardFormatName GetClipboardFormatNameA
 #define GetDlgItemText GetDlgItemTextA
@@ -4357,7 +4628,7 @@ typedef MONITORINFOEXA MONITORINFOEX, *LPMONITORINFOEX;
 #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