Fix build.
[reactos.git] / include / psdk / winuser.h
index 13f4175..563904b 100644 (file)
@@ -1,13 +1,23 @@
 #ifndef _WINUSER_H
 #define _WINUSER_H
-#if __GNUC__ >= 3
-#pragma GCC system_header
-#endif
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
+#ifdef _MSC_VER
+#pragma warning(push)
+#pragma warning(disable:4201)
+#pragma warning(disable:4820)
+#endif
+
+#if !defined(_USER32_)
+#define WINUSERAPI DECLSPEC_IMPORT
+#else
+#define WINUSERAPI
+#endif
+
+
 #define WC_DIALOG MAKEINTATOM(0x8002)
 #define FALT   16
 #define FCONTROL       8
@@ -98,26 +108,6 @@ extern "C" {
 #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
@@ -190,11 +180,6 @@ extern "C" {
 #define BROADCAST_QUERY_DENY   1112363332
 #define ENUM_CURRENT_SETTINGS  ((DWORD)-1)
 #define ENUM_REGISTRY_SETTINGS ((DWORD)-2)
-#define DM_BITSPERPEL  0x40000
-#define DM_PELSWIDTH   0x80000
-#define DM_PELSHEIGHT  0x100000
-#define DM_DISPLAYFLAGS 0x200000
-#define DM_DISPLAYFREQUENCY 0x400000
 #define CDS_UPDATEREGISTRY     1
 #define CDS_TEST       2
 #define CDS_FULLSCREEN 4
@@ -608,8 +593,8 @@ extern "C" {
 #define RT_RCDATA MAKEINTRESOURCE(10)
 #define RT_MESSAGETABLE MAKEINTRESOURCE(11)
 #define DIFFERENCE 11
-#define RT_GROUP_CURSOR MAKEINTRESOURCE((DWORD)RT_CURSOR+DIFFERENCE)
-#define RT_GROUP_ICON MAKEINTRESOURCE((DWORD)RT_ICON+DIFFERENCE)
+#define RT_GROUP_CURSOR MAKEINTRESOURCE((ULONG_PTR)RT_CURSOR+DIFFERENCE)
+#define RT_GROUP_ICON MAKEINTRESOURCE((ULONG_PTR)RT_ICON+DIFFERENCE)
 #define RT_VERSION MAKEINTRESOURCE(16)
 #define RT_DLGINCLUDE MAKEINTRESOURCE(17)
 #define RT_PLUGPLAY MAKEINTRESOURCE(19)
@@ -856,6 +841,7 @@ extern "C" {
 #if (_WIN32_WINNT >= 0x0501)
 #define QS_ALLEVENTS 1215
 #define QS_ALLINPUT 1279
+#define QS_RAWINPUT 1024
 #else
 #define QS_ALLEVENTS 191
 #define QS_ALLINPUT 255
@@ -885,37 +871,38 @@ extern "C" {
 #define MWMO_WAITALL 1
 #define MWMO_ALERTABLE 2
 #define MWMO_INPUTAVAILABLE 4
-#define COLOR_3DDKSHADOW 21
-#define COLOR_3DFACE 15
-#define COLOR_3DHILIGHT 20
-#define COLOR_3DHIGHLIGHT 20
-#define COLOR_3DLIGHT 22
-#define COLOR_BTNHILIGHT 20
-#define COLOR_3DSHADOW 16
-#define COLOR_ACTIVEBORDER 10
+
+#define COLOR_SCROLLBAR 0
+#define COLOR_BACKGROUND 1
+#define COLOR_DESKTOP COLOR_BACKGROUND
 #define COLOR_ACTIVECAPTION 2
+#define COLOR_INACTIVECAPTION 3
+#define COLOR_MENU 4
+#define COLOR_WINDOW 5
+#define COLOR_WINDOWFRAME 6
+#define COLOR_MENUTEXT 7
+#define COLOR_WINDOWTEXT 8
+#define COLOR_CAPTIONTEXT 9
+#define COLOR_ACTIVEBORDER 10
+#define COLOR_INACTIVEBORDER 11
 #define COLOR_APPWORKSPACE 12
-#define COLOR_BACKGROUND 1
-#define COLOR_DESKTOP 1
+#define COLOR_HIGHLIGHT 13
+#define COLOR_HIGHLIGHTTEXT 14
 #define COLOR_BTNFACE 15
-#define COLOR_BTNHIGHLIGHT 20
+#define COLOR_3DFACE COLOR_BTNFACE
 #define COLOR_BTNSHADOW 16
-#define COLOR_BTNTEXT 18
-#define COLOR_CAPTIONTEXT 9
+#define COLOR_3DSHADOW COLOR_BTNSHADOW
 #define COLOR_GRAYTEXT 17
-#define COLOR_HIGHLIGHT 13
-#define COLOR_HIGHLIGHTTEXT 14
-#define COLOR_INACTIVEBORDER 11
-#define COLOR_INACTIVECAPTION 3
+#define COLOR_BTNTEXT 18
 #define COLOR_INACTIVECAPTIONTEXT 19
-#define COLOR_INFOBK 24
+#define COLOR_BTNHIGHLIGHT 20
+#define COLOR_3DHIGHLIGHT COLOR_BTNHIGHLIGHT
+#define COLOR_3DHILIGHT COLOR_BTNHIGHLIGHT
+#define COLOR_BTNHILIGHT COLOR_BTNHIGHLIGHT
+#define COLOR_3DDKSHADOW 21
+#define COLOR_3DLIGHT 22
 #define COLOR_INFOTEXT 23
-#define COLOR_MENU 4
-#define COLOR_MENUTEXT 7
-#define COLOR_SCROLLBAR 0
-#define COLOR_WINDOW 5
-#define COLOR_WINDOWFRAME 6
-#define COLOR_WINDOWTEXT 8
+#define COLOR_INFOBK 24
 #define COLOR_HOTLIGHT 26
 #define COLOR_GRADIENTACTIVECAPTION 27
 #define COLOR_GRADIENTINACTIVECAPTION 28
@@ -923,6 +910,7 @@ extern "C" {
 #define COLOR_MENUHILIGHT 29
 #define COLOR_MENUBAR 30
 #endif
+
 #define CTLCOLOR_MSGBOX 0
 #define CTLCOLOR_EDIT 1
 #define CTLCOLOR_LISTBOX 2
@@ -999,7 +987,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
@@ -1015,22 +1002,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 */
+#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
@@ -1051,7 +1054,9 @@ extern "C" {
 #define LR_COPYDELETEORG 8
 #define LR_LOADFROMFILE 16
 #define LR_LOADTRANSPARENT 32
+#define LR_DEFAULTSIZE 64
 #define LR_LOADREALSIZE 128
+#define LR_VGACOLOR 128
 #define LR_LOADMAP3DCOLORS 4096
 #define LR_CREATEDIBSECTION 8192
 #define LR_COPYFROMRESOURCE 0x4000
@@ -1326,6 +1331,19 @@ extern "C" {
 #define SPI_SETICONTITLELOGFONT 0x0022
 #define SPI_GETFASTTASKSWITCH 0x0023
 #define SPI_SETFASTTASKSWITCH 0x0024
+#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
+#endif
 #define SPI_GETFILTERKEYS 0x0032
 #define SPI_SETFILTERKEYS 0x0033
 #define SPI_GETTOGGLEKEYS 0x0034
@@ -1338,21 +1356,13 @@ extern "C" {
 #define SPI_SETSTICKYKEYS 0x003B
 #define SPI_GETACCESSTIMEOUT 0x003C
 #define SPI_SETACCESSTIMEOUT 0x003D
+#if(WINVER >= 0x0400)
+    #define SPI_GETSERIALKEYS 0x003E
+    #define SPI_SETSERIALKEYS 0x003F
+#endif
 #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
@@ -1382,17 +1392,15 @@ extern "C" {
     #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(WINVER >= 0x0400)
+    #define SPI_SCREENSAVERRUNNING 0x0061
+    #define SPI_SETSCREENSAVERRUNNING SPI_SCREENSAVERRUNNING
+#endif
 #if (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400)
     #define SPI_GETMOUSEHOVERWIDTH 0x0062
     #define SPI_SETMOUSEHOVERWIDTH 0x0063
@@ -1404,19 +1412,25 @@ extern "C" {
     #define SPI_SETWHEELSCROLLLINES 0x0069
     #define SPI_GETMENUSHOWDELAY 0x006A
     #define SPI_SETMENUSHOWDELAY 0x006B
+    #if (_WIN32_WINNT >= 0x0600)
+        #define SPI_GETWHEELSCROLLCHARS 0x006C
+        #define SPI_SETWHEELSCROLLCHARS 0x006D
+    #endif
     #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 >= 0x0600)
+    #define SPI_GETAUDIODESCRIPTION 0x0074
+    #define SPI_SETAUDIODESCRIPTION 0x0075
+    #define SPI_GETSCREENSAVESECURE 0x0076
+    #define SPI_SETSCREENSAVESECURE 0x0077
+#endif
 #if(WINVER >= 0x0500)
     #define SPI_GETACTIVEWINDOWTRACKING 0x1000
     #define SPI_SETACTIVEWINDOWTRACKING 0x1001
@@ -1446,17 +1460,6 @@ extern "C" {
     #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
@@ -1471,13 +1474,31 @@ extern "C" {
         #define SPI_GETBLOCKSENDINPUTRESETS 0x1026
         #define SPI_SETBLOCKSENDINPUTRESETS 0x1027
     #endif
-
+    #define SPI_GETUIEFFECTS 0x103E
+    #define SPI_SETUIEFFECTS 0x103F
+    #if(_WIN32_WINNT >= 0x0600)
+        #define SPI_GETDISABLEOVERLAPPEDCONTENT 0x1040
+        #define SPI_SETDISABLEOVERLAPPEDCONTENT 0x1041
+        #define SPI_GETCLIENTAREAANIMATION 0x1042
+        #define SPI_SETCLIENTAREAANIMATION 0x1043
+        #define SPI_GETCLEARTYPE 0x1048
+        #define SPI_SETCLEARTYPE 0x1049
+        #define SPI_GETSPEECHRECOGNITION 0x104A
+        #define SPI_SETSPEECHRECOGNITION 0x104B
+    #endif
+    #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_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
@@ -1500,23 +1521,8 @@ extern "C" {
 #define SPIF_SENDCHANGE 2
 #define ATF_ONOFFFEEDBACK 2
 #define ATF_TIMEOUTON 1
-#define WM_APP 32768
-#define WM_ACTIVATE 6
-#define WM_ACTIVATEAPP 28
-/* FIXME/CHECK: Are WM_AFX{FIRST,LAST} valid for WINVER < 0x400? */
-#define WM_AFXFIRST 864
-#define WM_AFXLAST 895
-#define WM_ASKCBFORMATNAME 780
-#define WM_CANCELJOURNAL 75
-#define WM_CANCELMODE 31
-#define WM_CAPTURECHANGED 533
-#define WM_CHANGECBCHAIN 781
 
 #if (WINVER >= 0x0500)
-#define WM_CHANGEUISTATE 295
-#define WM_UPDATEUISTATE 296
-#define WM_QUERYUISTATE 297
-
 #define UIS_SET 1
 #define UIS_CLEAR 2
 #define UIS_INITIALIZE 3
@@ -1544,178 +1550,169 @@ extern "C" {
 #define PBT_APMOEMEVENT 0x000B
 #define PBT_APMRESUMEAUTOMATIC 0x0012
 
-#define WM_CHAR 258
-#define WM_CHARTOITEM 47
-#define WM_CHILDACTIVATE 34
-#define WM_CLEAR 771
-#define WM_CLOSE 16
-#define WM_COMMAND 273
-#define WM_COMMNOTIFY 68               /* obsolete */
-#define WM_COMPACTING 65
-#define WM_COMPAREITEM 57
-#define WM_CONTEXTMENU 123
-#define WM_COPY 769
-#define WM_COPYDATA 74
+
+/* Window messages */
+#define WM_NULL 0
 #define WM_CREATE 1
-#define WM_CTLCOLORBTN 309
-#define WM_CTLCOLORDLG 310
-#define WM_CTLCOLOREDIT 307
-#define WM_CTLCOLORLISTBOX 308
-#define WM_CTLCOLORMSGBOX 306
-#define WM_CTLCOLORSCROLLBAR 311
-#define WM_CTLCOLORSTATIC 312
-#define WM_CUT 768
-#define WM_DEADCHAR 259
-#define WM_DELETEITEM 45
 #define WM_DESTROY 2
-#define WM_DESTROYCLIPBOARD 775
-#define WM_DEVICECHANGE 537
-#define WM_DEVMODECHANGE 27
-#define WM_DISPLAYCHANGE 126
-#define WM_DRAWCLIPBOARD 776
-#define WM_DRAWITEM 43
-#define WM_DROPFILES 563
+#define WM_MOVE 3
+#define WM_SIZE 5
+#define WM_ACTIVATE 6
+#define WM_SETFOCUS 7
+#define WM_KILLFOCUS 8
 #define WM_ENABLE 10
-#define WM_ENDSESSION 22
-#define WM_ENTERIDLE 289
-#define WM_ENTERMENULOOP 529
-#define WM_ENTERSIZEMOVE 561
+#define WM_SETREDRAW 11
+#define WM_SETTEXT 12
+#define WM_GETTEXT 13
+#define WM_GETTEXTLENGTH 14
+#define WM_PAINT 15
+#define WM_CLOSE 16
+#define WM_QUERYENDSESSION 17
+#define WM_QUIT 18
+#define WM_QUERYOPEN 19
 #define WM_ERASEBKGND 20
-#define WM_EXITMENULOOP 530
-#define WM_EXITSIZEMOVE 562
+#define WM_SYSCOLORCHANGE 21
+#define WM_ENDSESSION 22
+#define WM_SHOWWINDOW 24
+#define WM_SETTINGCHANGE 26
+#define WM_WININICHANGE 26
+#define WM_DEVMODECHANGE 27
+#define WM_ACTIVATEAPP 28
 #define WM_FONTCHANGE 29
-#define WM_GETDLGCODE 135
-#define WM_GETFONT 49
-#define WM_GETHOTKEY 51
-#define WM_GETICON 127
+#define WM_TIMECHANGE 30
+#define WM_CANCELMODE 31
+#define WM_SETCURSOR 32
+#define WM_MOUSEACTIVATE 33
+#define WM_CHILDACTIVATE 34
+#define WM_QUEUESYNC 35
 #define WM_GETMINMAXINFO 36
-#define WM_GETTEXT 13
-#define WM_GETTEXTLENGTH 14
-/* FIXME/CHECK: Are WM_HANDHEL{FIRST,LAST} valid for WINVER < 0x400? */
-#define WM_HANDHELDFIRST 856
-#define WM_HANDHELDLAST 863
-#define WM_HELP 83
-#define WM_HOTKEY 786
-#define WM_HSCROLL 276
-#define WM_HSCROLLCLIPBOARD 782
+#define WM_PAINTICON 38
 #define WM_ICONERASEBKGND 39
-#define WM_INITDIALOG 272
-#define WM_INITMENU 278
-#define WM_INITMENUPOPUP 279
-#define WM_INPUTLANGCHANGE 81
-#define WM_INPUTLANGCHANGEREQUEST 80
-#define WM_KEYDOWN 256
-#define WM_KEYUP 257
-#define WM_KILLFOCUS 8
-#define WM_MDIACTIVATE 546
-#define WM_MDICASCADE 551
-#define WM_MDICREATE 544
-#define WM_MDIDESTROY 545
-#define WM_MDIGETACTIVE 553
-#define WM_MDIICONARRANGE 552
-#define WM_MDIMAXIMIZE 549
-#define WM_MDINEXT 548
-#define WM_MDIREFRESHMENU 564
-#define WM_MDIRESTORE 547
-#define WM_MDISETMENU 560
-#define WM_MDITILE 550
+#define WM_NEXTDLGCTL 40
+#define WM_SPOOLERSTATUS 42
+#define WM_DRAWITEM 43
 #define WM_MEASUREITEM 44
+#define WM_DELETEITEM 45
+#define WM_VKEYTOITEM 46
+#define WM_CHARTOITEM 47
+#define WM_SETFONT 48
+#define WM_GETFONT 49
+#define WM_SETHOTKEY 50
+#define WM_GETHOTKEY 51
+#define WM_QUERYDRAGICON 55
+#define WM_COMPAREITEM 57
 #if (WINVER >= 0x0500)
-#define WM_MENURBUTTONUP 290
-#endif
-#define WM_MENUCHAR 288
-#define WM_MENUCOMMAND 294
-#define WM_MENUSELECT 287
-#define WM_NEXTMENU 531
-#define WM_MOVE 3
-#define WM_MOVING 534
-#define WM_NCACTIVATE 134
-#define WM_NCCALCSIZE 131
+#define WM_GETOBJECT 61
+#endif /* (WINVER >= 0x0500) */
+#define WM_COMPACTING 65
+#define WM_COMMNOTIFY 68               /* obsolete */
+#define WM_WINDOWPOSCHANGING 70
+#define WM_WINDOWPOSCHANGED 71
+#define WM_POWER 72
+#define WM_COPYDATA 74
+#define WM_CANCELJOURNAL 75
+
+#if (WINVER >= 0x0400)
+#define WM_NOTIFY 78
+#define WM_INPUTLANGCHANGEREQUEST 80
+#define WM_INPUTLANGCHANGE 81
+#define WM_TCARD 82
+#define WM_HELP 83
+#define WM_USERCHANGED 84
+#define WM_NOTIFYFORMAT 85
+#define WM_CONTEXTMENU 123
+#define WM_STYLECHANGING 124
+#define WM_STYLECHANGED 125
+#define WM_DISPLAYCHANGE 126
+#define WM_GETICON 127
+#define WM_SETICON 128
+#endif /* (WINVER >= 0x0400) */
+
 #define WM_NCCREATE 129
 #define WM_NCDESTROY 130
+#define WM_NCCALCSIZE 131
 #define WM_NCHITTEST 132
-#define WM_NCLBUTTONDBLCLK 163
+#define WM_NCPAINT 133
+#define WM_NCACTIVATE 134
+#define WM_GETDLGCODE 135
+#define WM_SYNCPAINT  136
+#define WM_NCMOUSEMOVE 160
 #define WM_NCLBUTTONDOWN 161
 #define WM_NCLBUTTONUP 162
-#define WM_NCMBUTTONDBLCLK 169
+#define WM_NCLBUTTONDBLCLK 163
+#define WM_NCRBUTTONDOWN 164
+#define WM_NCRBUTTONUP 165
+#define WM_NCRBUTTONDBLCLK 166
 #define WM_NCMBUTTONDOWN 167
 #define WM_NCMBUTTONUP 168
+#define WM_NCMBUTTONDBLCLK 169
+
 #if (_WIN32_WINNT >= 0x0500)
 #define WM_NCXBUTTONDOWN 171
 #define WM_NCXBUTTONUP 172
 #define WM_NCXBUTTONDBLCLK 173
-#endif
-#define WM_NCMOUSEMOVE 160
-#define WM_NCMOUSEHOVER     0x02A0
-#define WM_NCMOUSELEAVE     0x02A2
-#define WM_NCPAINT 133
-#define WM_NCRBUTTONDBLCLK 166
-#define WM_NCRBUTTONDOWN 164
-#define WM_NCRBUTTONUP 165
-#define WM_NEXTDLGCTL 40
-#define WM_NEXTMENU 531
-#define WM_NOTIFY 78
-#define WM_NOTIFYFORMAT 85
-#define WM_NULL 0
-#define WM_PAINT 15
-#define WM_PAINTCLIPBOARD 777
-#define WM_PAINTICON 38
-#define WM_PALETTECHANGED 785
-#define WM_PALETTEISCHANGING 784
-#define WM_PARENTNOTIFY 528
-#define WM_PASTE 770
-#define WM_PENWINFIRST 896
-#define WM_PENWINLAST 911
-#define WM_POWER 72
-#define WM_POWERBROADCAST 536
-#define WM_PRINT 791
-#define WM_PRINTCLIENT 792
-#define WM_QUERYDRAGICON 55
-#define WM_QUERYENDSESSION 17
-#define WM_QUERYNEWPALETTE 783
-#define WM_QUERYOPEN 19
-#define WM_QUEUESYNC 35
-#define WM_QUIT 18
-#define WM_RENDERALLFORMATS 774
-#define WM_RENDERFORMAT 773
-#define WM_SETCURSOR 32
-#define WM_SETFOCUS 7
-#define WM_SETFONT 48
-#define WM_SETHOTKEY 50
-#define WM_SETICON 128
-#define WM_SETREDRAW 11
-#define WM_SETTEXT 12
-#define WM_SETTINGCHANGE 26
-#define WM_SHOWWINDOW 24
-#define WM_SIZE 5
-#define WM_SIZECLIPBOARD 779
-#define WM_SIZING 532
-#define WM_SPOOLERSTATUS 42
-#define WM_STYLECHANGED 125
-#define WM_STYLECHANGING 124
-#define WM_SYSCHAR 262
-#define WM_SYSCOLORCHANGE 21
-#define WM_SYSCOMMAND 274
-#define WM_SYSDEADCHAR 263
+#endif /* (_WIN32_WINNT >= 0x0500) */
+
+#define WM_KEYFIRST 256
+#define WM_KEYDOWN 256
+#define WM_KEYUP 257
+#define WM_CHAR 258
+#define WM_DEADCHAR 259
 #define WM_SYSKEYDOWN 260
 #define WM_SYSKEYUP 261
-#define WM_TCARD 82
-#define WM_TIMECHANGE 30
+#define WM_SYSCHAR 262
+#define WM_SYSDEADCHAR 263
+#if(_WIN32_WINNT >= 0x0501)
+#define WM_UNICHAR 0x0109
+#define WM_KEYLAST WM_UNICHAR
+#define UNICODE_NOCHAR 0xffff
+#else
+#define WM_KEYLAST 264
+#endif
+
+/* Win32 4.0 messages for IME */
+#if (WINVER >= 0x0400)
+#define WM_IME_STARTCOMPOSITION     0x010d
+#define WM_IME_ENDCOMPOSITION       0x010e
+#define WM_IME_COMPOSITION          0x010f
+#define WM_IME_KEYLAST              0x010f
+#endif /* (WINVER >= 0x0400) */
+
+#define WM_INITDIALOG 272
+#define WM_COMMAND 273
+#define WM_SYSCOMMAND 274
 #define WM_TIMER 275
-#define WM_SYSTIMER 280
-#define WM_UNDO 772
-#define WM_USER 1024
-#define WM_USERCHANGED 84
-#define WM_VKEYTOITEM 46
+#define WM_HSCROLL 276
 #define WM_VSCROLL 277
-#define WM_VSCROLLCLIPBOARD 778
-#define WM_WINDOWPOSCHANGED 71
-#define WM_WINDOWPOSCHANGING 70
-#define WM_WININICHANGE 26
-#define WM_KEYFIRST 256
-#define WM_KEYLAST 264
-#define WM_SYNCPAINT  136
-#define WM_MOUSEACTIVATE 33
+#define WM_INITMENU 278
+#define WM_INITMENUPOPUP 279
+#define WM_MENUSELECT 287
+#define WM_MENUCHAR 288
+#define WM_ENTERIDLE 289
+
+#if (WINVER >= 0x0500)
+#ifndef _WIN32_WCE
+#define WM_MENURBUTTONUP 290
+#define WM_MENUDRAG 291
+#define WM_MENUGETOBJECT 292
+#define WM_UNINITMENUPOPUP 293
+#define WM_MENUCOMMAND 294
+#if(_WIN32_WINNT >= 0x0500)
+#define WM_CHANGEUISTATE 295
+#define WM_UPDATEUISTATE 296
+#define WM_QUERYUISTATE 297
+#endif /* _WIN32_WINNT >= 0x0500 */
+#endif /* _WIN32_WCE */
+#endif /* (WINVER >= 0x0500) */
+
+#define WM_CTLCOLORMSGBOX 306
+#define WM_CTLCOLOREDIT 307
+#define WM_CTLCOLORLISTBOX 308
+#define WM_CTLCOLORBTN 309
+#define WM_CTLCOLORDLG 310
+#define WM_CTLCOLORSCROLLBAR 311
+#define WM_CTLCOLORSTATIC 312
+#define MN_GETHMENU 481
 #define WM_MOUSEFIRST 512
 #define WM_MOUSEMOVE 512
 #define WM_LBUTTONDOWN 513
@@ -1742,8 +1739,87 @@ extern "C" {
 #else
 #define WM_MOUSELAST 521
 #endif
-#define WM_MOUSEHOVER 0x2A1
-#define WM_MOUSELEAVE 0x2A3
+#define WM_PARENTNOTIFY 528
+#define WM_ENTERMENULOOP 529
+#define WM_EXITMENULOOP 530
+#define WM_NEXTMENU 531
+#define WM_SIZING 532
+#define WM_CAPTURECHANGED 533
+#define WM_MOVING 534
+#define WM_POWERBROADCAST 536
+#define WM_DEVICECHANGE 537
+#define WM_MDICREATE 544
+#define WM_MDIDESTROY 545
+#define WM_MDIACTIVATE 546
+#define WM_MDIRESTORE 547
+#define WM_MDINEXT 548
+#define WM_MDIMAXIMIZE 549
+#define WM_MDITILE 550
+#define WM_MDICASCADE 551
+#define WM_MDIICONARRANGE 552
+#define WM_MDIGETACTIVE 553
+#define WM_MDISETMENU 560
+#define WM_ENTERSIZEMOVE 561
+#define WM_EXITSIZEMOVE 562
+#define WM_DROPFILES 563
+#define WM_MDIREFRESHMENU 564
+
+/* 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
+
+#define WM_NCMOUSEHOVER             0x02A0
+#define WM_NCMOUSELEAVE             0x02A2
+#define WM_MOUSEHOVER               0x02A1
+#define WM_MOUSELEAVE               0x02A3
+
+#define WM_CUT 768
+#define WM_COPY 769
+#define WM_PASTE 770
+#define WM_CLEAR 771
+#define WM_UNDO 772
+#define WM_RENDERFORMAT 773
+#define WM_RENDERALLFORMATS 774
+#define WM_DESTROYCLIPBOARD 775
+#define WM_DRAWCLIPBOARD 776
+#define WM_PAINTCLIPBOARD 777
+#define WM_VSCROLLCLIPBOARD 778
+#define WM_SIZECLIPBOARD 779
+#define WM_ASKCBFORMATNAME 780
+#define WM_CHANGECBCHAIN 781
+#define WM_HSCROLLCLIPBOARD 782
+#define WM_PALETTEISCHANGING 784
+#define WM_PALETTECHANGED 785
+#define WM_QUERYNEWPALETTE 783
+#define WM_HOTKEY 786
+#define WM_PRINT 791
+#define WM_PRINTCLIENT 792
+
+#define WM_DWMCOMPOSITIONCHANGED 0x031E
+#define WM_DWMNCRENDERINGCHANGED 0x031F
+#define WM_DWMCOLORIZATIONCOLORCHANGED 0x0320
+#define WM_DWMWINDOWMAXIMIZEDCHANGE 0x0321
+
+#define WM_HANDHELDFIRST 856
+#define WM_HANDHELDLAST 863
+#define WM_AFXFIRST 864
+#define WM_AFXLAST 895
+#define WM_PENWINFIRST 896
+#define WM_PENWINLAST 911
+#define WM_USER 1024
+#define WM_APP 32768
+#define WM_GETTITLEBARINFOEX 0x033F
+
+
 #if (_WIN32_WINNT >= 0x0400)
 #define WHEEL_DELTA 120
 #define GET_WHEEL_DELTA_WPARAM(wparam) ((short)HIWORD (wparam))
@@ -1752,21 +1828,6 @@ extern "C" {
 #if (_WIN32_WINNT >= 0x0501)
 #define WM_THEMECHANGED 794
 #endif
-#ifndef _WIN32_WCE
-#if(_WIN32_WINNT >= 0x0500)
-#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 BM_GETCHECK 240
 #define BM_GETIMAGE 246
@@ -1836,6 +1897,7 @@ extern "C" {
 #define EM_CHARFROMPOS 215
 #define EM_EMPTYUNDOBUFFER 205
 #define EM_FMTLINES 200
+#define EM_GETIMESTATUS 217
 #define EM_GETFIRSTVISIBLELINE 206
 #define EM_GETHANDLE 189
 #define EM_GETLIMITTEXT 213
@@ -1858,6 +1920,7 @@ extern "C" {
 #define EM_SCROLL 181
 #define EM_SCROLLCARET 183
 #define EM_SETHANDLE 188
+#define EM_SETIMESTATUS 216
 #define EM_SETLIMITTEXT 197
 #define EM_SETMARGINS 211
 #define EM_SETMODIFY 185
@@ -1879,6 +1942,9 @@ extern "C" {
 #define EN_VSCROLL 1538
 #define LB_ADDFILE 406
 #define LB_ADDSTRING 384
+#ifdef _WINE
+#define LB_CARETOFF 420
+#endif
 #define LB_DELETESTRING 386
 #define LB_DIR 397
 #define LB_FINDSTRING 399
@@ -1927,11 +1993,16 @@ extern "C" {
 #define SBM_ENABLE_ARROWS 228
 #define SBM_GETPOS 225
 #define SBM_GETRANGE 227
-#define SBM_GETSCROLLINFO 234
 #define SBM_SETPOS 224
 #define SBM_SETRANGE 226
 #define SBM_SETRANGEREDRAW 230
+#if (_WIN32_WINNT >= 0x0400)
+#define SBM_GETSCROLLINFO 234
 #define SBM_SETSCROLLINFO 233
+#endif
+#if (_WIN32_WINNT >= 0x0501)
+#define SBM_GETSCROLLBARINFO 235
+#endif
 #define STM_GETICON 369
 #define STM_GETIMAGE 371
 #define STM_SETICON 368
@@ -1967,6 +2038,9 @@ extern "C" {
 #define DCX_INTERSECTRGN 128
 #define DCX_VALIDATE 0x200000
 #define DCX_EXCLUDEUPDATE   0x100
+#ifdef _WINE
+#define DCX_USESTYLE     0x10000
+#endif
 #define GMDI_GOINTOPOPUPS 2
 #define GMDI_USEDISABLED 1
 #define FKF_AVAILABLE 2
@@ -2159,6 +2233,8 @@ extern "C" {
 #if (_WIN32_WINNT >= 0x0500)
 #define VK_OEM_102     0xE2
 #endif
+#define VK_ICO_HELP    0xE3  /* Help key on ICO */
+#define VK_ICO_00      0xE4  /* 00 key on ICO */
 #define VK_PROCESSKEY  0xE5
 #if (_WIN32_WINNT >= 0x0500)
 #define VK_PACKET      0xE7
@@ -2370,8 +2446,18 @@ extern "C" {
 #define ODS_DISABLED 4
 #define ODS_CHECKED 8
 #define ODS_FOCUS 16
+#if(WINVER >= 0x0400)
 #define ODS_DEFAULT 32
 #define ODS_COMBOBOXEDIT 4096
+#endif
+#if(WINVER >= 0x0500)
+#define ODS_HOTLIGHT        0x0040
+#define ODS_INACTIVE        0x0080
+#if(_WIN32_WINNT >= 0x0500)
+#define ODS_NOACCEL         0x0100
+#define ODS_NOFOCUSRECT     0x0200
+#endif
+#endif
 #define IDHOT_SNAPWINDOW (-1)
 #define IDHOT_SNAPDESKTOP (-2)
 #define DBWF_LPARAMPOINTER 0x8000
@@ -2448,14 +2534,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
@@ -2471,13 +2553,15 @@ extern "C" {
 #endif /* (WINVER >= 0x0500) */
 #define CURSOR_SHOWING 0x00000001
 #define WS_ACTIVECAPTION 0x00000001
-#if (_WIN32_WINNT >= 0x0403)
-#define INPUT_MOUSE 0x00000000
-#define INPUT_KEYBOARD 0x00000001
-#define INPUT_HARDWARE 0x00000002
-#endif /* (_WIN32_WINNT >= 0x0403) */
+#if (_WIN32_WINNT >= 0x0400)
+#define INPUT_MOUSE 0
+#define INPUT_KEYBOARD 1
+#define INPUT_HARDWARE 2
+#endif /* (_WIN32_WINNT >= 0x0400) */
 #if (WINVER >= 0x0400)
 #define ENDSESSION_LOGOFF 0x80000000
+#define ENDSESSION_CRITICAL 0x40000000
+#define ENDSESSION_CLOSEAPP 0x00000001
 #endif
 #if (WINVER >= 0x0500)
 #define CHILDID_SELF 0
@@ -2587,6 +2671,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
@@ -2617,10 +2705,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
@@ -2638,7 +2726,7 @@ extern "C" {
 #define RI_MOUSE_BUTTON_5_DOWN      0x0100
 #define RI_MOUSE_BUTTON_5_UP        0x0200
 #define RI_MOUSE_WHEEL              0x0400
-#define KEYBOARD_OVERRUN_MAKE_CODE 0x00ff
+#define KEYBOARD_OVERRUN_MAKE_CODE 0xFF
 #define RI_KEY_MAKE            0x0000
 #define RI_KEY_BREAK           0x0001
 #define RI_KEY_E0              0x0002
@@ -2691,8 +2779,8 @@ extern "C" {
 #define STATE_SYSTEM_VALID 0x1fffffff
 
 #ifndef RC_INVOKED
-typedef BOOL(CALLBACK *DLGPROC)(HWND,UINT,WPARAM,LPARAM);
-typedef VOID(CALLBACK *TIMERPROC)(HWND,UINT,UINT,DWORD);
+typedef INT_PTR(CALLBACK *DLGPROC)(HWND,UINT,WPARAM,LPARAM);
+typedef VOID(CALLBACK *TIMERPROC)(HWND,UINT,UINT_PTR,DWORD);
 typedef BOOL(CALLBACK *GRAYSTRINGPROC)(HDC,LPARAM,int);
 typedef LRESULT(CALLBACK *HOOKPROC)(int,WPARAM,LPARAM);
 typedef BOOL(CALLBACK *PROPENUMPROCA)(HWND,LPCSTR,HANDLE);
@@ -2715,20 +2803,25 @@ typedef void(CALLBACK *SENDASYNCPROC)(HWND,UINT,DWORD,LRESULT);
 DECLARE_HANDLE(HHOOK);
 DECLARE_HANDLE(HDWP);
 DECLARE_HANDLE(HDEVNOTIFY);
+typedef HDEVNOTIFY *PHDEVNOTIFY;
+
 typedef struct tagACCEL {
        BYTE fVirt;
        WORD key;
        WORD cmd;
 } ACCEL,*LPACCEL;
+
 typedef struct tagACCESSTIMEOUT {
        UINT cbSize;
        DWORD dwFlags;
        DWORD iTimeOutMSec;
 } ACCESSTIMEOUT, *LPACCESSTIMEOUT;
+
 typedef struct tagANIMATIONINFO {
        UINT cbSize;
        int iMinAnimate;
 } ANIMATIONINFO,*LPANIMATIONINFO;
+
 typedef struct tagCREATESTRUCTA {
        LPVOID  lpCreateParams;
        HINSTANCE       hInstance;
@@ -2743,6 +2836,7 @@ typedef struct tagCREATESTRUCTA {
        LPCSTR  lpszClass;
        DWORD   dwExStyle;
 } CREATESTRUCTA,*LPCREATESTRUCTA;
+
 typedef struct tagCREATESTRUCTW {
        LPVOID  lpCreateParams;
        HINSTANCE       hInstance;
@@ -2757,37 +2851,44 @@ typedef struct tagCREATESTRUCTW {
        LPCWSTR lpszClass;
        DWORD   dwExStyle;
 } CREATESTRUCTW,*LPCREATESTRUCTW;
+
 typedef struct tagCBT_CREATEWNDA {
        LPCREATESTRUCTA lpcs;
        HWND    hwndInsertAfter;
 } CBT_CREATEWNDA, *LPCBT_CREATEWNDA;
+
 typedef struct tagCBT_CREATEWNDW {
        LPCREATESTRUCTW lpcs;
        HWND    hwndInsertAfter;
 } CBT_CREATEWNDW, *LPCBT_CREATEWNDW;
+
 typedef struct tagCBTACTIVATESTRUCT {
        BOOL fMouse;
        HWND hWndActive;
 } CBTACTIVATESTRUCT,*LPCBTACTIVATESTRUCT;
+
 typedef struct tagCLIENTCREATESTRUCT {
        HANDLE  hWindowMenu;
        UINT    idFirstChild;
 } CLIENTCREATESTRUCT,*LPCLIENTCREATESTRUCT;
+
 typedef struct tagCOMPAREITEMSTRUCT {
        UINT    CtlType;
        UINT    CtlID;
        HWND    hwndItem;
        UINT    itemID1;
-       DWORD   itemData1;
+       ULONG_PTR       itemData1;
        UINT    itemID2;
-       DWORD   itemData2;
+       ULONG_PTR       itemData2;
        DWORD   dwLocaleId;
-} COMPAREITEMSTRUCT,*LPCOMPAREITEMSTRUCT;
+} COMPAREITEMSTRUCT, *PCOMPAREITEMSTRUCT,*LPCOMPAREITEMSTRUCT;
+
 typedef struct tagCOPYDATASTRUCT {
-       DWORD dwData;
+       ULONG_PTR dwData;
        DWORD cbData;
        PVOID lpData;
 } COPYDATASTRUCT,*PCOPYDATASTRUCT;
+
 typedef struct tagCURSORSHAPE {
        int xHotSpot;
        int yHotSpot;
@@ -2797,6 +2898,7 @@ typedef struct tagCURSORSHAPE {
     BYTE Planes;
     BYTE BitsPixel;
 } CURSORSHAPE,*LPCURSORSHAPE;
+
 typedef struct tagCWPRETSTRUCT {
        LRESULT lResult;
        LPARAM lParam;
@@ -2804,12 +2906,14 @@ typedef struct tagCWPRETSTRUCT {
        DWORD message;
        HWND hwnd;
 } CWPRETSTRUCT,*PCWPRETSTRUCT, *LPCWPRETSTRUCT;
+
 typedef struct tagCWPSTRUCT {
        LPARAM lParam;
        WPARAM wParam;
        UINT message;
        HWND hwnd;
 } CWPSTRUCT,*PCWPSTRUCT, *LPCWPSTRUCT;
+
 typedef struct tagDEBUGHOOKINFO {
        DWORD idThread;
        DWORD idThreadInstaller;
@@ -2817,14 +2921,16 @@ typedef struct tagDEBUGHOOKINFO {
        WPARAM wParam;
        int code;
 } DEBUGHOOKINFO,*PDEBUGHOOKINFO,*LPDEBUGHOOKINFO;
+
 typedef struct tagDELETEITEMSTRUCT {
        UINT CtlType;
        UINT CtlID;
        UINT itemID;
        HWND hwndItem;
-       UINT itemData;
+       ULONG_PTR itemData;
 } DELETEITEMSTRUCT,*PDELETEITEMSTRUCT,*LPDELETEITEMSTRUCT;
-#pragma pack(push,2)
+
+#include <pshpack2.h>
 typedef struct {
        DWORD style;
        DWORD dwExtendedStyle;
@@ -2834,6 +2940,7 @@ typedef struct {
        short cy;
        WORD id;
 } DLGITEMTEMPLATE,*LPDLGITEMTEMPLATE;
+
 typedef struct {
        DWORD style;
        DWORD dwExtendedStyle;
@@ -2843,15 +2950,23 @@ typedef struct {
        short cx;
        short cy;
 } DLGTEMPLATE,*LPDLGTEMPLATE,*LPDLGTEMPLATEA,*LPDLGTEMPLATEW;
-typedef const DLGTEMPLATE *LPCDLGTEMPLATE;
+
 typedef const DLGTEMPLATE *LPCDLGTEMPLATEA;
 typedef const DLGTEMPLATE *LPCDLGTEMPLATEW;
+typedef DLGITEMTEMPLATE *PDLGITEMTEMPLATEA;
+typedef DLGITEMTEMPLATE *PDLGITEMTEMPLATEW;
+DECL_WINELIB_TYPE_AW(PDLGITEMTEMPLATE)
+typedef DLGITEMTEMPLATE *LPDLGITEMTEMPLATEA;
+typedef DLGITEMTEMPLATE *LPDLGITEMTEMPLATEW;
+
+
 #ifdef UNICODE
 typedef LPCDLGTEMPLATEW LPCDLGTEMPLATE;
 #else
 typedef LPCDLGTEMPLATEA LPCDLGTEMPLATE;
 #endif // UNICODE
-#pragma pack(pop)
+#include <poppack.h>
+
 typedef struct tagDRAWITEMSTRUCT {
        UINT CtlType;
        UINT CtlID;
@@ -2861,8 +2976,9 @@ typedef struct tagDRAWITEMSTRUCT {
        HWND hwndItem;
        HDC     hDC;
        RECT rcItem;
-       DWORD itemData;
+       ULONG_PTR itemData;
 } DRAWITEMSTRUCT,*LPDRAWITEMSTRUCT,*PDRAWITEMSTRUCT;
+
 typedef struct {
        UINT cbSize;
        int iTabLength;
@@ -2870,6 +2986,7 @@ typedef struct {
        int iRightMargin;
        UINT uiLengthDrawn;
 } DRAWTEXTPARAMS,*LPDRAWTEXTPARAMS;
+
 typedef struct tagPAINTSTRUCT {
        HDC     hdc;
        BOOL fErase;
@@ -2877,7 +2994,8 @@ typedef struct tagPAINTSTRUCT {
        BOOL fRestore;
        BOOL fIncUpdate;
        BYTE rgbReserved[32];
-} PAINTSTRUCT,*LPPAINTSTRUCT;
+} PAINTSTRUCT, *PPAINTSTRUCT,*LPPAINTSTRUCT;
+
 typedef struct tagMSG {
        HWND hwnd;
        UINT message;
@@ -2886,6 +3004,7 @@ typedef struct tagMSG {
        DWORD time;
        POINT pt;
 } MSG,*LPMSG,*PMSG;
+
 typedef struct _ICONINFO {
        BOOL fIcon;
        DWORD xHotspot;
@@ -2893,11 +3012,13 @@ typedef struct _ICONINFO {
        HBITMAP hbmMask;
        HBITMAP hbmColor;
 } ICONINFO,*PICONINFO;
+
 typedef struct tagNMHDR {
        HWND hwndFrom;
-       UINT idFrom;
+       UINT_PTR idFrom;
        UINT code;
 } NMHDR,*LPNMHDR;
+
 typedef struct _WNDCLASSA {
        UINT style;
        WNDPROC lpfnWndProc;
@@ -2910,6 +3031,7 @@ typedef struct _WNDCLASSA {
        LPCSTR lpszMenuName;
        LPCSTR lpszClassName;
 } WNDCLASSA,*LPWNDCLASSA,*PWNDCLASSA;
+
 typedef struct _WNDCLASSW {
        UINT style;
        WNDPROC lpfnWndProc;
@@ -2922,6 +3044,7 @@ typedef struct _WNDCLASSW {
        LPCWSTR lpszMenuName;
        LPCWSTR lpszClassName;
 } WNDCLASSW,*LPWNDCLASSW,*PWNDCLASSW;
+
 typedef struct _WNDCLASSEXA {
        UINT cbSize;
        UINT style;
@@ -2936,6 +3059,7 @@ typedef struct _WNDCLASSEXA {
        LPCSTR lpszClassName;
        HICON hIconSm;
 } WNDCLASSEXA,*LPWNDCLASSEXA,*PWNDCLASSEXA;
+
 typedef struct _WNDCLASSEXW {
        UINT cbSize;
        UINT style;
@@ -2950,6 +3074,7 @@ typedef struct _WNDCLASSEXW {
        LPCWSTR lpszClassName;
        HICON hIconSm;
 } WNDCLASSEXW,*LPWNDCLASSEXW,*PWNDCLASSEXW;
+
 typedef struct tagMENUITEMINFOA {
        UINT cbSize;
        UINT fMask;
@@ -2959,7 +3084,7 @@ typedef struct tagMENUITEMINFOA {
        HMENU hSubMenu;
        HBITMAP hbmpChecked;
        HBITMAP hbmpUnchecked;
-       DWORD dwItemData;
+       ULONG_PTR dwItemData;
        LPSTR dwTypeData;
        UINT cch;
 #if (_WIN32_WINNT >= 0x0500)
@@ -2967,6 +3092,7 @@ typedef struct tagMENUITEMINFOA {
 #endif
 } MENUITEMINFOA,*LPMENUITEMINFOA;
 typedef const MENUITEMINFOA *LPCMENUITEMINFOA;
+
 typedef struct tagMENUITEMINFOW {
        UINT cbSize;
        UINT fMask;
@@ -2976,14 +3102,16 @@ typedef struct tagMENUITEMINFOW {
        HMENU hSubMenu;
        HBITMAP hbmpChecked;
        HBITMAP hbmpUnchecked;
-       DWORD dwItemData;
+       ULONG_PTR dwItemData;
        LPWSTR dwTypeData;
        UINT cch;
 #if (_WIN32_WINNT >= 0x0500)
        HBITMAP hbmpItem;
 #endif
 } MENUITEMINFOW,*LPMENUITEMINFOW;
+
 typedef const MENUITEMINFOW *LPCMENUITEMINFOW;
+
 typedef struct tagSCROLLINFO {
        UINT cbSize;
        UINT fMask;
@@ -2994,6 +3122,7 @@ typedef struct tagSCROLLINFO {
        int nTrackPos;
 } SCROLLINFO,*LPSCROLLINFO;
 typedef const SCROLLINFO *LPCSCROLLINFO;
+
 typedef struct _WINDOWPLACEMENT {
        UINT length;
        UINT flags;
@@ -3002,25 +3131,31 @@ typedef struct _WINDOWPLACEMENT {
        POINT ptMaxPosition;
        RECT rcNormalPosition;
 } WINDOWPLACEMENT,*LPWINDOWPLACEMENT,*PWINDOWPLACEMENT;
+
 typedef struct {
        WORD versionNumber;
        WORD offset;
-} MENUITEMTEMPLATEHEADER;
+} MENUITEMTEMPLATEHEADER, *PMENUITEMTEMPLATEHEADER;
+
 typedef struct {
        WORD mtOption;
        WORD mtID;
        WCHAR mtString[1];
-} MENUITEMTEMPLATE;
+} MENUITEMTEMPLATE, *PMENUITEMTEMPLATE;
+
 typedef void MENUTEMPLATE,MENUTEMPLATEA,MENUTEMPLATEW,*LPMENUTEMPLATEA,*LPMENUTEMPLATEW,*LPMENUTEMPLATE;
+
 typedef struct tagHELPINFO {
        UINT cbSize;
        int iContextType;
        int iCtrlId;
        HANDLE hItemHandle;
-       DWORD dwContextId;
+       DWORD_PTR dwContextId;
        POINT MousePos;
 } HELPINFO,*LPHELPINFO;
+
 typedef void(CALLBACK *MSGBOXCALLBACK)(LPHELPINFO);
+
 typedef struct {
        UINT cbSize;
        HWND hwndOwner;
@@ -3029,10 +3164,11 @@ typedef struct {
        LPCSTR lpszCaption;
        DWORD dwStyle;
        LPCSTR lpszIcon;
-       DWORD dwContextHelpId;
+       DWORD_PTR dwContextHelpId;
        MSGBOXCALLBACK lpfnMsgBoxCallback;
        DWORD dwLanguageId;
 } MSGBOXPARAMSA,*PMSGBOXPARAMSA,*LPMSGBOXPARAMSA;
+
 typedef struct {
        UINT cbSize;
        HWND hwndOwner;
@@ -3041,15 +3177,17 @@ typedef struct {
        LPCWSTR lpszCaption;
        DWORD dwStyle;
        LPCWSTR lpszIcon;
-       DWORD dwContextHelpId;
+       DWORD_PTR dwContextHelpId;
        MSGBOXCALLBACK lpfnMsgBoxCallback;
        DWORD dwLanguageId;
 } MSGBOXPARAMSW,*PMSGBOXPARAMSW,*LPMSGBOXPARAMSW;
+
 typedef struct tagUSEROBJECTFLAGS {
        BOOL fInherit;
        BOOL fReserved;
        DWORD dwFlags;
-} USEROBJECTFLAGS;
+} USEROBJECTFLAGS, *PUSEROBJECTFLAGS;
+
 typedef struct tagFILTERKEYS {
        UINT cbSize;
        DWORD dwFlags;
@@ -3058,16 +3196,19 @@ typedef struct tagFILTERKEYS {
        DWORD iRepeatMSec;
        DWORD iBounceMSec;
 } FILTERKEYS, *LPFILTERKEYS;
+
 typedef struct tagHIGHCONTRASTA {
        UINT cbSize;
        DWORD dwFlags;
        LPSTR lpszDefaultScheme;
 } HIGHCONTRASTA,*LPHIGHCONTRASTA;
+
 typedef struct tagHIGHCONTRASTW {
        UINT cbSize;
        DWORD dwFlags;
        LPWSTR lpszDefaultScheme;
 } HIGHCONTRASTW,*LPHIGHCONTRASTW;
+
 #if defined(_WINGDI_) && !defined(NOGDI)
 typedef struct tagICONMETRICSA {
        UINT cbSize;
@@ -3076,6 +3217,7 @@ typedef struct tagICONMETRICSA {
        int iTitleWrap;
        LOGFONTA lfFont;
 } ICONMETRICSA,*LPICONMETRICSA;
+
 typedef struct tagICONMETRICSW {
        UINT cbSize;
        int iHorzSpacing;
@@ -3083,14 +3225,22 @@ typedef struct tagICONMETRICSW {
        int iTitleWrap;
        LOGFONTW lfFont;
 } ICONMETRICSW,*LPICONMETRICSW;
+
+#ifdef UNICODE
+typedef ICONMETRICSW ICONMETRICS,*LPICONMETRICS;
+#else /* UNICODE */
+typedef ICONMETRICSA ICONMETRICS,*LPICONMETRICS;
+#endif /* UNICODE */
 #endif /*  NOGDI */
+
 typedef struct tagMINIMIZEDMETRICS {
        UINT cbSize;
        int iWidth;
        int iHorzGap;
        int iVertGap;
        int iArrange;
-} MINIMIZEDMETRICS,*LPMINIMIZEDMETRICS;
+} MINIMIZEDMETRICS, *PMINIMIZEDMETRICS,*LPMINIMIZEDMETRICS;
+
 typedef struct tagMOUSEKEYS{
        UINT cbSize;
        DWORD dwFlags;
@@ -3100,6 +3250,7 @@ typedef struct tagMOUSEKEYS{
        DWORD dwReserved1;
        DWORD dwReserved2;
 } MOUSEKEYS,*LPMOUSEKEYS;
+
 #if defined(_WINGDI_) && !defined(NOGDI)
 typedef struct tagNONCLIENTMETRICSA {
        UINT cbSize;
@@ -3117,7 +3268,8 @@ typedef struct tagNONCLIENTMETRICSA {
        LOGFONTA lfMenuFont;
        LOGFONTA lfStatusFont;
        LOGFONTA lfMessageFont;
-} NONCLIENTMETRICSA,*LPNONCLIENTMETRICSA;
+} NONCLIENTMETRICSA, *PNONCLIENTMETRICSA,*LPNONCLIENTMETRICSA;
+
 typedef struct tagNONCLIENTMETRICSW {
        UINT cbSize;
        int iBorderWidth;
@@ -3134,8 +3286,15 @@ typedef struct tagNONCLIENTMETRICSW {
        LOGFONTW lfMenuFont;
        LOGFONTW lfStatusFont;
        LOGFONTW lfMessageFont;
-} NONCLIENTMETRICSW,*LPNONCLIENTMETRICSW;
+} NONCLIENTMETRICSW, *PNONCLIENTMETRICSW,*LPNONCLIENTMETRICSW;
+
+#ifdef UNICODE
+typedef NONCLIENTMETRICSW NONCLIENTMETRICS,*LPNONCLIENTMETRICS;
+#else /* UNICODE */
+typedef NONCLIENTMETRICSA NONCLIENTMETRICS,*LPNONCLIENTMETRICS;
+#endif /* UNICODE */
 #endif
+
 typedef struct tagSERIALKEYSA {
        UINT cbSize;
        DWORD dwFlags;
@@ -3145,6 +3304,7 @@ typedef struct tagSERIALKEYSA {
        UINT iPortState;
        UINT iActive;
 } SERIALKEYSA,*LPSERIALKEYSA;
+
 typedef struct tagSERIALKEYSW {
        UINT cbSize;
        DWORD dwFlags;
@@ -3154,6 +3314,7 @@ typedef struct tagSERIALKEYSW {
        UINT iPortState;
        UINT iActive;
 } SERIALKEYSW,*LPSERIALKEYSW;
+
 typedef struct tagSOUNDSENTRYA {
        UINT cbSize;
        DWORD dwFlags;
@@ -3168,6 +3329,7 @@ typedef struct tagSOUNDSENTRYA {
        LPSTR lpszWindowsEffectDLL;
        DWORD iWindowsEffectOrdinal;
 } SOUNDSENTRYA,*LPSOUNDSENTRYA;
+
 typedef struct tagSOUNDSENTRYW {
        UINT cbSize;
        DWORD dwFlags;
@@ -3182,20 +3344,31 @@ typedef struct tagSOUNDSENTRYW {
        LPWSTR lpszWindowsEffectDLL;
        DWORD iWindowsEffectOrdinal;
 } SOUNDSENTRYW,*LPSOUNDSENTRYW;
+
 typedef struct tagSTICKYKEYS {
        DWORD cbSize;
        DWORD dwFlags;
 } STICKYKEYS,*LPSTICKYKEYS;
+
 typedef struct tagTOGGLEKEYS {
        DWORD cbSize;
        DWORD dwFlags;
 } TOGGLEKEYS, *LPTOGGLEKEYS;
+
 typedef struct tagMOUSEHOOKSTRUCT {
        POINT pt;
        HWND hwnd;
        UINT wHitTestCode;
-       DWORD dwExtraInfo;
+       ULONG_PTR dwExtraInfo;
 } MOUSEHOOKSTRUCT,*LPMOUSEHOOKSTRUCT,*PMOUSEHOOKSTRUCT;
+
+typedef struct tagHARDWAREHOOKSTRUCT {
+    HWND    hwnd;
+    UINT    message;
+    WPARAM  wParam;
+    LPARAM  lParam;
+} HARDWAREHOOKSTRUCT, *PHARDWAREHOOKSTRUCT, *LPHARDWAREHOOKSTRUCT;
+
 #if ( _WIN32_WINNT >= 0x0500 )
 #ifdef __cplusplus
 typedef struct tagMOUSEHOOKSTRUCTEX : public tagMOUSEHOOKSTRUCT
@@ -3210,16 +3383,19 @@ typedef struct tagMOUSEHOOKSTRUCTEX
 } MOUSEHOOKSTRUCTEX, *LPMOUSEHOOKSTRUCTEX, *PMOUSEHOOKSTRUCTEX;
 #endif
 #endif
+
 typedef struct tagTRACKMOUSEEVENT {
        DWORD cbSize;
        DWORD dwFlags;
        HWND  hwndTrack;
        DWORD dwHoverTime;
 } TRACKMOUSEEVENT,*LPTRACKMOUSEEVENT;
+
 typedef struct tagTPMPARAMS {
        UINT cbSize;
        RECT rcExclude;
 } TPMPARAMS,*LPTPMPARAMS;
+
 typedef struct tagEVENTMSG {
        UINT message;
        UINT paramL;
@@ -3227,6 +3403,7 @@ typedef struct tagEVENTMSG {
        DWORD time;
        HWND hwnd;
 } EVENTMSG,*PEVENTMSGMSG,*LPEVENTMSGMSG,*PEVENTMSG,*LPEVENTMSG;
+
 typedef struct _WINDOWPOS {
        HWND hwnd;
        HWND hwndInsertAfter;
@@ -3236,10 +3413,12 @@ typedef struct _WINDOWPOS {
        int cy;
        UINT flags;
 } WINDOWPOS,*PWINDOWPOS,*LPWINDOWPOS;
+
 typedef struct tagNCCALCSIZE_PARAMS {
        RECT rgrc[3];
        PWINDOWPOS lppos;
 } NCCALCSIZE_PARAMS, *LPNCCALCSIZE_PARAMS;
+
 typedef struct tagMDICREATESTRUCTA {
        LPCSTR szClass;
        LPCSTR szTitle;
@@ -3251,6 +3430,7 @@ typedef struct tagMDICREATESTRUCTA {
        DWORD style;
        LPARAM lParam;
 } MDICREATESTRUCTA,*LPMDICREATESTRUCTA;
+
 typedef struct tagMDICREATESTRUCTW {
        LPCWSTR szClass;
        LPCWSTR szTitle;
@@ -3262,6 +3442,7 @@ typedef struct tagMDICREATESTRUCTW {
        DWORD style;
        LPARAM lParam;
 } MDICREATESTRUCTW,*LPMDICREATESTRUCTW;
+
 typedef struct tagMINMAXINFO {
        POINT ptReserved;
        POINT ptMaxSize;
@@ -3269,38 +3450,44 @@ typedef struct tagMINMAXINFO {
        POINT ptMinTrackSize;
        POINT ptMaxTrackSize;
 } MINMAXINFO,*PMINMAXINFO,*LPMINMAXINFO;
+
 typedef struct tagMDINEXTMENU {
        HMENU hmenuIn;
        HMENU hmenuNext;
        HWND hwndNext;
 } MDINEXTMENU,*PMDINEXTMENU,*LPMDINEXTMENU;
+
 typedef struct tagMEASUREITEMSTRUCT {
        UINT CtlType;
        UINT CtlID;
        UINT itemID;
        UINT itemWidth;
        UINT itemHeight;
-       DWORD itemData;
+       ULONG_PTR itemData;
 } MEASUREITEMSTRUCT,*PMEASUREITEMSTRUCT,*LPMEASUREITEMSTRUCT;
+
 typedef struct tagDROPSTRUCT {
        HWND hwndSource;
        HWND hwndSink;
        DWORD wFmt;
-       DWORD dwData;
+       ULONG_PTR dwData;
        POINT ptDrop;
        DWORD dwControlData;
 } DROPSTRUCT,*PDROPSTRUCT,*LPDROPSTRUCT;
+
 typedef DWORD HELPPOLY;
 typedef struct tagMULTIKEYHELPA {
        DWORD mkSize;
        CHAR mkKeylist;
        CHAR szKeyphrase[1];
 } MULTIKEYHELPA,*PMULTIKEYHELPA,*LPMULTIKEYHELPA;
+
 typedef struct tagMULTIKEYHELPW {
        DWORD mkSize;
        WCHAR mkKeylist;
        WCHAR szKeyphrase[1];
 } MULTIKEYHELPW,*PMULTIKEYHELPW,*LPMULTIKEYHELPW;
+
 typedef struct tagHELPWININFOA {
        int wStructSize;
        int x;
@@ -3310,6 +3497,7 @@ typedef struct tagHELPWININFOA {
        int wMax;
        CHAR rgchMember[2];
 } HELPWININFOA,*PHELPWININFOA,*LPHELPWININFOA;
+
 typedef struct tagHELPWININFOW {
        int wStructSize;
        int x;
@@ -3319,10 +3507,12 @@ typedef struct tagHELPWININFOW {
        int wMax;
        WCHAR rgchMember[2];
 } HELPWININFOW,*PHELPWININFOW,*LPHELPWININFOW;
+
 typedef struct tagSTYLESTRUCT {
        DWORD styleOld;
        DWORD styleNew;
 } STYLESTRUCT,*LPSTYLESTRUCT;
+
 typedef struct tagALTTABINFO {
        DWORD cbSize;
        int   cItems;
@@ -3334,6 +3524,7 @@ typedef struct tagALTTABINFO {
        int   cyItem;
        POINT ptStart;
 } ALTTABINFO,*PALTTABINFO,*LPALTTABINFO;
+
 typedef struct tagCOMBOBOXINFO {
        DWORD cbSize;
        RECT rcItem;
@@ -3343,12 +3534,14 @@ typedef struct tagCOMBOBOXINFO {
        HWND hwndItem;
        HWND hwndList;
 } COMBOBOXINFO,*PCOMBOBOXINFO,*LPCOMBOBOXINFO;
+
 typedef struct tagCURSORINFO {
        DWORD cbSize;
        DWORD flags;
        HCURSOR hCursor;
        POINT ptScreenPos;
 } CURSORINFO,*PCURSORINFO,*LPCURSORINFO;
+
 typedef struct tagMENUBARINFO {
        DWORD cbSize;
        RECT  rcBar;
@@ -3357,6 +3550,7 @@ typedef struct tagMENUBARINFO {
        BOOL  fBarFocused:1;
        BOOL  fFocused:1;
 } MENUBARINFO,*PMENUBARINFO;
+
 typedef struct tagMENUINFO {
        DWORD cbSize;
        DWORD fMask;
@@ -3366,8 +3560,10 @@ typedef struct tagMENUINFO {
        DWORD   dwContextHelpID;
        ULONG_PTR dwMenuData;
 } MENUINFO,*LPMENUINFO;
+
 typedef MENUINFO CONST *LPCMENUINFO;
 #define CCHILDREN_SCROLLBAR 5
+
 typedef struct tagSCROLLBARINFO {
        DWORD cbSize;
        RECT  rcScrollBar;
@@ -3377,12 +3573,15 @@ typedef struct tagSCROLLBARINFO {
        int   reserved;
        DWORD rgstate[CCHILDREN_SCROLLBAR+1];
 } SCROLLBARINFO,*PSCROLLBARINFO,*LPSCROLLBARINFO;
+
 #define CCHILDREN_TITLEBAR 5
+
 typedef struct tagTITLEBARINFO {
        DWORD cbSize;
        RECT  rcTitleBar;
        DWORD rgstate[CCHILDREN_TITLEBAR+1];
 } TITLEBARINFO,*PTITLEBARINFO,*LPTITLEBARINFO;
+
 typedef struct tagWINDOWINFO {
        DWORD cbSize;
        RECT  rcWindow;
@@ -3395,16 +3594,19 @@ typedef struct tagWINDOWINFO {
        ATOM  atomWindowType;
        WORD  wCreatorVersion;
 } WINDOWINFO,*PWINDOWINFO,*LPWINDOWINFO;
+
 typedef struct tagLASTINPUTINFO {
        UINT cbSize;
        DWORD dwTime;
 } LASTINPUTINFO,*PLASTINPUTINFO;
+
 typedef struct tagMONITORINFO {
        DWORD cbSize;
        RECT rcMonitor;
        RECT rcWork;
        DWORD dwFlags;
 } MONITORINFO,*LPMONITORINFO;
+
 #define CCHDEVICENAME 32
 typedef struct tagMONITORINFOEXA {
        DWORD   cbSize;
@@ -3413,6 +3615,7 @@ typedef struct tagMONITORINFOEXA {
        DWORD   dwFlags;
        CHAR    szDevice[CCHDEVICENAME];
 } MONITORINFOEXA,*LPMONITORINFOEXA;
+
 typedef struct tagMONITORINFOEXW {
        DWORD   cbSize;
        RECT    rcMonitor;
@@ -3420,13 +3623,15 @@ typedef struct tagMONITORINFOEXW {
        DWORD   dwFlags;
        WCHAR   szDevice[CCHDEVICENAME];
 } MONITORINFOEXW,*LPMONITORINFOEXW;
+
 typedef struct tagKBDLLHOOKSTRUCT {
        DWORD vkCode;
        DWORD scanCode;
        DWORD flags;
        DWORD time;
-       DWORD dwExtraInfo;
+       ULONG_PTR dwExtraInfo;
 } KBDLLHOOKSTRUCT,*LPKBDLLHOOKSTRUCT,*PKBDLLHOOKSTRUCT;
+
 typedef struct tagMSLLHOOKSTRUCT
 {
        POINT pt;
@@ -3435,6 +3640,7 @@ typedef struct tagMSLLHOOKSTRUCT
        DWORD time;
        ULONG_PTR dwExtraInfo;
 } MSLLHOOKSTRUCT, *LPMSLLHOOKSTRUCT, *PMSLLHOOKSTRUCT;
+
 #if (_WIN32_WINNT >= 0x0500 || _WIN32_WINDOWS >= 0x0410)
 typedef struct {
   UINT  cbSize;
@@ -3444,6 +3650,7 @@ typedef struct {
   DWORD dwTimeout;
 } FLASHWINFO,*PFLASHWINFO;
 #endif /* (WINVER >= 0x0500 || _WIN32_WINDOWS >= 0x0410) */
+
 #if (_WIN32_WINNT >= 0x0500 || _WIN32_WINDOWS >= 0x0490)
 typedef struct tagMOUSEMOVEPOINT {
   int x;
@@ -3452,7 +3659,8 @@ typedef struct tagMOUSEMOVEPOINT {
   ULONG_PTR dwExtraInfo;
 } MOUSEMOVEPOINT,*PMOUSEMOVEPOINT,*LPMOUSEMOVEPOINT;
 #endif
-#if (_WIN32_WINNT >= 0x0403)
+
+#if (_WIN32_WINNT >= 0x0400)
 typedef struct tagMOUSEINPUT {
   LONG dx;
   LONG dy;
@@ -3460,19 +3668,22 @@ typedef struct tagMOUSEINPUT {
   DWORD dwFlags;
   DWORD time;
   ULONG_PTR dwExtraInfo;
-} MOUSEINPUT,*PMOUSEINPUT;
+} MOUSEINPUT,*PMOUSEINPUT, *LPMOUSEINPUT;
+
 typedef struct tagKEYBDINPUT {
   WORD wVk;
   WORD wScan;
   DWORD dwFlags;
   DWORD time;
   ULONG_PTR dwExtraInfo;
-} KEYBDINPUT,*PKEYBDINPUT;
+} KEYBDINPUT, *PKEYBDINPUT, *LPKEYBDINPUT;
+
 typedef struct tagHARDWAREINPUT {
   DWORD uMsg;
   WORD wParamL;
   WORD wParamH;
-} HARDWAREINPUT,*PHARDWAREINPUT;
+} HARDWAREINPUT, *PHARDWAREINPUT, *LPHARDWAREINPUT;
+
 typedef struct tagINPUT {
   DWORD type;
   _ANONYMOUS_UNION union {
@@ -3481,7 +3692,8 @@ typedef struct tagINPUT {
                HARDWAREINPUT hi;
   } DUMMYUNIONNAME;
 } INPUT,*PINPUT,*LPINPUT;
-#endif /* (_WIN32_WINNT >= 0x0403) */
+#endif /* (_WIN32_WINNT >= 0x0400) */
+
 #if (WINVER >= 0x0500)
 typedef struct tagGUITHREADINFO {
        DWORD cbSize;
@@ -3494,8 +3706,10 @@ typedef struct tagGUITHREADINFO {
        HWND hwndCaret;
        RECT rcCaret;
 } GUITHREADINFO,*PGUITHREADINFO,*LPGUITHREADINFO;
-typedef VOID (*WINEVENTPROC)(HWINEVENTHOOK,DWORD,HWND,LONG,LONG,DWORD,DWORD);
+
+typedef VOID (CALLBACK *WINEVENTPROC)(HWINEVENTHOOK,DWORD,HWND,LONG,LONG,DWORD,DWORD);
 #endif /* (WINVER >= 0x0500) */
+
 #if (_WIN32_WINNT >= 0x0501)
 typedef struct {
        UINT  cbSize;
@@ -3504,12 +3718,14 @@ typedef struct {
        LUID  luid;
 } BSMINFO,*PBSMINFO;
 DECLARE_HANDLE(HRAWINPUT);
+
 typedef struct tagRAWINPUTHEADER {
        DWORD dwType;
        DWORD dwSize;
        HANDLE hDevice;
        WPARAM wParam;
 } RAWINPUTHEADER,*PRAWINPUTHEADER;
+
 typedef struct tagRAWMOUSE {
        USHORT usFlags;
        _ANONYMOUS_UNION union {
@@ -3524,6 +3740,7 @@ typedef struct tagRAWMOUSE {
        LONG lLastY;
        ULONG ulExtraInformation;
 } RAWMOUSE,*PRAWMOUSE,*LPRAWMOUSE;
+
 typedef struct tagRAWKEYBOARD {
        USHORT MakeCode;
        USHORT Flags;
@@ -3532,11 +3749,13 @@ typedef struct tagRAWKEYBOARD {
        UINT Message;
        ULONG ExtraInformation;
 } RAWKEYBOARD,*PRAWKEYBOARD,*LPRAWKEYBOARD;
+
 typedef struct tagRAWHID {
        DWORD dwSizeHid;
        DWORD dwCount;
        BYTE bRawData;
 } RAWHID,*PRAWHID,*LPRAWHID;
+
 typedef struct tagRAWINPUT {
        RAWINPUTHEADER header;
        union {
@@ -3545,13 +3764,16 @@ typedef struct tagRAWINPUT {
                RAWHID      hid;
        } data;
 } RAWINPUT,*PRAWINPUT,*LPRAWINPUT;
+
 typedef struct tagRAWINPUTDEVICE {
        USHORT usUsagePage;
        USHORT usUsage;
        DWORD dwFlags;
        HWND hwndTarget;
 } RAWINPUTDEVICE,*PRAWINPUTDEVICE,*LPRAWINPUTDEVICE;
+
 typedef const RAWINPUTDEVICE *PCRAWINPUTDEVICE;
+
 typedef struct tagRAWINPUTDEVICELIST {
        HANDLE hDevice;
        DWORD dwType;
@@ -3657,7 +3879,7 @@ int WINAPI CountClipboardFormats(void);
 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);
+HCURSOR WINAPI CreateCursor(HINSTANCE,int,int,int,int,CONST VOID*,CONST VOID*);
 #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);
@@ -3682,8 +3904,10 @@ HMENU WINAPI CreatePopupMenu(void);
 #define CreateWindowW(a,b,c,d,e,f,g,h,i,j,k) CreateWindowExW(0,a,b,c,d,e,f,g,h,i,j,k)
 HWND WINAPI CreateWindowExA(DWORD,LPCSTR,LPCSTR,DWORD,int,int,int,int,HWND,HMENU,HINSTANCE,LPVOID);
 HWND WINAPI CreateWindowExW(DWORD,LPCWSTR,LPCWSTR,DWORD,int,int,int,int,HWND,HMENU,HINSTANCE,LPVOID);
+#ifndef NOWINDOWSTATION
 HWINSTA WINAPI CreateWindowStationA(LPSTR,DWORD,DWORD,LPSECURITY_ATTRIBUTES);
 HWINSTA WINAPI CreateWindowStationW(LPWSTR,DWORD,DWORD,LPSECURITY_ATTRIBUTES);
+#endif
 LRESULT WINAPI DefDlgProcA(HWND,UINT,WPARAM,LPARAM);
 LRESULT WINAPI DefDlgProcW(HWND,UINT,WPARAM,LPARAM);
 HDWP WINAPI DeferWindowPos(HDWP,HWND,HWND,int,int,int,int,UINT);
@@ -3709,12 +3933,12 @@ BOOL WINAPI DestroyWindow(HWND);
 #define DialogBoxW(i,t,p,f) DialogBoxParamW(i,t,p,f,0)
 #define DialogBoxIndirectA(i,t,p,f) DialogBoxIndirectParamA(i,t,p,f,0)
 #define DialogBoxIndirectW(i,t,p,f) DialogBoxIndirectParamW(i,t,p,f,0)
-int WINAPI DialogBoxIndirectParamA(HINSTANCE,LPCDLGTEMPLATE,HWND,DLGPROC,LPARAM);
-int WINAPI DialogBoxIndirectParamW(HINSTANCE,LPCDLGTEMPLATE,HWND,DLGPROC,LPARAM);
-int WINAPI DialogBoxParamA(HINSTANCE,LPCSTR,HWND,DLGPROC,LPARAM);
-int WINAPI DialogBoxParamW(HINSTANCE,LPCWSTR,HWND,DLGPROC,LPARAM);
-LONG WINAPI DispatchMessageA(const MSG*);
-LONG WINAPI DispatchMessageW(const MSG*);
+INT_PTR WINAPI DialogBoxIndirectParamA(HINSTANCE,LPCDLGTEMPLATE,HWND,DLGPROC,LPARAM);
+INT_PTR WINAPI DialogBoxIndirectParamW(HINSTANCE,LPCDLGTEMPLATE,HWND,DLGPROC,LPARAM);
+INT_PTR WINAPI DialogBoxParamA(HINSTANCE,LPCSTR,HWND,DLGPROC,LPARAM);
+INT_PTR WINAPI DialogBoxParamW(HINSTANCE,LPCWSTR,HWND,DLGPROC,LPARAM);
+LRESULT WINAPI DispatchMessageA(const MSG*);
+LRESULT WINAPI DispatchMessageW(const MSG*);
 int WINAPI DlgDirListA(HWND,LPSTR,int,int,UINT);
 int WINAPI DlgDirListW(HWND,LPWSTR,int,int,UINT);
 int WINAPI DlgDirListComboBoxA(HWND,LPSTR,int,int,UINT);
@@ -3724,7 +3948,7 @@ BOOL WINAPI DlgDirSelectComboBoxExW(HWND,LPWSTR,int,int);
 BOOL WINAPI DlgDirSelectExA(HWND,LPSTR,int,int);
 BOOL WINAPI DlgDirSelectExW(HWND,LPWSTR,int,int);
 BOOL WINAPI DragDetect(HWND,POINT);
-DWORD WINAPI DragObject(HWND,HWND,UINT,DWORD,HCURSOR);
+DWORD WINAPI DragObject(HWND,HWND,UINT,ULONG_PTR,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);
@@ -3747,7 +3971,7 @@ BOOL WINAPI EnableMenuItem(HMENU,UINT,UINT);
 BOOL WINAPI EnableScrollBar(HWND,UINT,UINT);
 BOOL WINAPI EnableWindow(HWND,BOOL);
 BOOL WINAPI EndDeferWindowPos(HDWP);
-BOOL WINAPI EndDialog(HWND,int);
+BOOL WINAPI EndDialog(HWND,INT_PTR);
 BOOL WINAPI EndMenu(void);
 BOOL WINAPI EndPaint(HWND,const PAINTSTRUCT*);
 #if (_WIN32_WINNT >= 0x0500)
@@ -3804,8 +4028,8 @@ BOOL WINAPI GetClassInfoExW(HINSTANCE,LPCWSTR,LPWNDCLASSEXW);
 DWORD WINAPI GetClassLongA(HWND,int);
 DWORD WINAPI GetClassLongW(HWND,int);
 #ifdef _WIN64
-LONG_PTR WINAPI GetClassLongPtrA(HWND,int);
-LONG_PTR WINAPI GetClassLongPtrW(HWND,int);
+ULONG_PTR WINAPI GetClassLongPtrA(HWND,int);
+ULONG_PTR WINAPI GetClassLongPtrW(HWND,int);
 #else
 #define GetClassLongPtrA GetClassLongA
 #define GetClassLongPtrW GetClassLongW
@@ -3866,7 +4090,7 @@ int WINAPI GetMenuStringA(HMENU,UINT,LPSTR,int,UINT);
 int WINAPI GetMenuStringW(HMENU,UINT,LPWSTR,int,UINT);
 BOOL WINAPI GetMessageA(LPMSG,HWND,UINT,UINT);
 BOOL WINAPI GetMessageW(LPMSG,HWND,UINT,UINT);
-LONG WINAPI GetMessageExtraInfo(void);
+LPARAM WINAPI GetMessageExtraInfo(void);
 DWORD WINAPI GetMessagePos(void);
 LONG WINAPI GetMessageTime(void);
 #if (_WIN32_WINNT >= 0x0500 || _WIN32_WINDOWS >= 0x0490)
@@ -3901,8 +4125,8 @@ HBRUSH WINAPI GetSysColorBrush(int);
 #define GetSysModalWindow() (NULL)
 HMENU WINAPI GetSystemMenu(HWND,BOOL);
 int WINAPI GetSystemMetrics(int);
-DWORD WINAPI GetTabbedTextExtentA(HDC,LPCSTR,int,int,LPINT);
-DWORD WINAPI GetTabbedTextExtentW(HDC,LPCWSTR,int,int,LPINT);
+DWORD WINAPI GetTabbedTextExtentA(HDC,LPCSTR,int,int,CONST LPINT);
+DWORD WINAPI GetTabbedTextExtentW(HDC,LPCWSTR,int,int,CONST LPINT);
 LONG WINAPI GetWindowLongA(HWND,int);
 LONG WINAPI GetWindowLongW(HWND,int);
 #ifdef _WIN64
@@ -3962,8 +4186,8 @@ BOOL WINAPI InSendMessage(void);
 #if (_WIN32_WINNT >= 0x0500 || _WIN32_WINDOWS >= 0x0410)
 DWORD WINAPI InSendMessageEx(LPVOID);
 #endif
-BOOL WINAPI InsertMenuA(HMENU,UINT,UINT,UINT,LPCSTR);
-BOOL WINAPI InsertMenuW(HMENU,UINT,UINT,UINT,LPCWSTR);
+BOOL WINAPI InsertMenuA(HMENU,UINT,UINT,UINT_PTR,LPCSTR);
+BOOL WINAPI InsertMenuW(HMENU,UINT,UINT,UINT_PTR,LPCWSTR);
 BOOL WINAPI InsertMenuItemA(HMENU,UINT,BOOL,LPCMENUITEMINFOA);
 BOOL WINAPI InsertMenuItemW(HMENU,UINT,BOOL,LPCMENUITEMINFOW);
 INT WINAPI InternalGetWindowText(HWND,LPWSTR,INT);
@@ -4001,8 +4225,8 @@ BOOL WINAPI IsWindowVisible(HWND);
 BOOL WINAPI IsWinEventHookInstalled(DWORD);
 #endif
 BOOL WINAPI IsZoomed(HWND);
-VOID WINAPI keybd_event(BYTE,BYTE,DWORD,DWORD);
-BOOL WINAPI KillTimer(HWND,UINT);
+VOID WINAPI keybd_event(BYTE,BYTE,DWORD,ULONG_PTR);
+BOOL WINAPI KillTimer(HWND,UINT_PTR);
 HACCEL WINAPI LoadAcceleratorsA(HINSTANCE,LPCSTR);
 HACCEL WINAPI LoadAcceleratorsW(HINSTANCE,LPCWSTR);
 HBITMAP WINAPI LoadBitmapA(HINSTANCE,LPCSTR);
@@ -4043,8 +4267,8 @@ int WINAPI MessageBoxExA(HWND,LPCSTR,LPCSTR,UINT,WORD);
 int WINAPI MessageBoxExW(HWND,LPCWSTR,LPCWSTR,UINT,WORD);
 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);
+BOOL WINAPI ModifyMenuA(HMENU,UINT,UINT,UINT_PTR,LPCSTR);
+BOOL WINAPI ModifyMenuW(HMENU,UINT,UINT,UINT_PTR,LPCWSTR);
 HMONITOR WINAPI MonitorFromPoint(POINT,DWORD);
 HMONITOR WINAPI MonitorFromRect(LPCRECT,DWORD);
 HMONITOR WINAPI MonitorFromWindow(HWND,DWORD);
@@ -4081,6 +4305,8 @@ BOOL WINAPI PostThreadMessageW(DWORD,UINT,WPARAM,LPARAM);
 #if (_WIN32_WINNT >= 0x0501)
 BOOL WINAPI PrintWindow(HWND,HDC,UINT);
 #endif
+UINT WINAPI PrivateExtractIconsA(LPCSTR,int,int,int,HICON*,UINT*,UINT,UINT);
+UINT WINAPI PrivateExtractIconsW(LPCWSTR,int,int,int,HICON*,UINT*,UINT,UINT);
 BOOL WINAPI PtInRect(LPCRECT,POINT);
 HWND WINAPI RealChildWindowFromPoint(HWND,POINT);
 UINT WINAPI RealGetWindowClassA(HWND,LPSTR,UINT);
@@ -4114,16 +4340,16 @@ BOOL WINAPI ScreenToClient(HWND,LPPOINT);
 BOOL WINAPI ScrollDC(HDC,int,int,LPCRECT,LPCRECT,HRGN,LPRECT);
 BOOL WINAPI ScrollWindow(HWND,int,int,LPCRECT,LPCRECT);
 int WINAPI ScrollWindowEx(HWND,int,int,LPCRECT,LPCRECT,HRGN,LPRECT,UINT);
-LONG WINAPI SendDlgItemMessageA(HWND,int,UINT,WPARAM,LPARAM);
-LONG WINAPI SendDlgItemMessageW(HWND,int,UINT,WPARAM,LPARAM);
+LRESULT WINAPI SendDlgItemMessageA(HWND,int,UINT,WPARAM,LPARAM);
+LRESULT WINAPI SendDlgItemMessageW(HWND,int,UINT,WPARAM,LPARAM);
 #if (_WIN32_WINNT >= 0x0403)
 UINT WINAPI SendInput(UINT,LPINPUT,int);
 #endif
 LRESULT WINAPI SendMessageA(HWND,UINT,WPARAM,LPARAM);
-BOOL WINAPI SendMessageCallbackA(HWND,UINT,WPARAM,LPARAM,SENDASYNCPROC,DWORD);
-BOOL WINAPI SendMessageCallbackW(HWND,UINT,WPARAM,LPARAM,SENDASYNCPROC,DWORD);
-LRESULT WINAPI SendMessageTimeoutA(HWND,UINT,WPARAM,LPARAM,UINT,UINT,PDWORD);
-LRESULT WINAPI SendMessageTimeoutW(HWND,UINT,WPARAM,LPARAM,UINT,UINT,PDWORD);
+BOOL WINAPI SendMessageCallbackA(HWND,UINT,WPARAM,LPARAM,SENDASYNCPROC,ULONG_PTR);
+BOOL WINAPI SendMessageCallbackW(HWND,UINT,WPARAM,LPARAM,SENDASYNCPROC,ULONG_PTR);
+LRESULT WINAPI SendMessageTimeoutA(HWND,UINT,WPARAM,LPARAM,UINT,UINT,PDWORD_PTR);
+LRESULT WINAPI SendMessageTimeoutW(HWND,UINT,WPARAM,LPARAM,UINT,UINT,PDWORD_PTR);
 LRESULT WINAPI SendMessageW(HWND,UINT,WPARAM,LPARAM);
 BOOL WINAPI SendNotifyMessageA(HWND,UINT,WPARAM,LPARAM);
 BOOL WINAPI SendNotifyMessageW(HWND,UINT,WPARAM,LPARAM);
@@ -4175,11 +4401,11 @@ 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 *);
-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);
-UINT WINAPI SetTimer(HWND,UINT,UINT,TIMERPROC);
+UINT_PTR WINAPI SetTimer(HWND,UINT_PTR,UINT,TIMERPROC);
 BOOL WINAPI SetUserObjectInformationA(HANDLE,int,PVOID,DWORD);
 BOOL WINAPI SetUserObjectInformationW(HANDLE,int,PVOID,DWORD);
 BOOL WINAPI SetUserObjectSecurity(HANDLE,PSECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
@@ -4202,6 +4428,7 @@ int WINAPI SetWindowRgn(HWND,HRGN,BOOL);
 HHOOK WINAPI SetWindowsHookA(int,HOOKPROC);
 HHOOK WINAPI SetWindowsHookExA(int,HOOKPROC,HINSTANCE,DWORD);
 HHOOK WINAPI SetWindowsHookExW(int,HOOKPROC,HINSTANCE,DWORD);
+HHOOK WINAPI SetWindowsHookW(int,HOOKPROC);
 BOOL WINAPI SetWindowTextA(HWND,LPCSTR);
 BOOL WINAPI SetWindowTextW(HWND,LPCWSTR);
 WORD WINAPI SetWindowWord(HWND,int,WORD);
@@ -4219,13 +4446,13 @@ VOID WINAPI SwitchToThisWindow(HWND,BOOL);
 #endif /* (_WIN32_WINNT >= 0x0500) */
 BOOL WINAPI SystemParametersInfoA(UINT,UINT,PVOID,UINT);
 BOOL WINAPI SystemParametersInfoW(UINT,UINT,PVOID,UINT);
-LONG WINAPI TabbedTextOutA(HDC,int,int,LPCSTR,int,int,LPINT,int);
-LONG WINAPI TabbedTextOutW(HDC,int,int,LPCWSTR,int,int,LPINT,int);
+LONG WINAPI TabbedTextOutA(HDC,int,int,LPCSTR,int,int,CONST LPINT,int);
+LONG WINAPI TabbedTextOutW(HDC,int,int,LPCWSTR,int,int,CONST LPINT,int);
 WORD WINAPI TileWindows(HWND,UINT,LPCRECT,UINT,const HWND *);
-int WINAPI ToAscii(UINT,UINT,PBYTE,LPWORD,UINT);
-int WINAPI ToAsciiEx(UINT,UINT,PBYTE,LPWORD,UINT,HKL);
-int WINAPI ToUnicode(UINT,UINT,PBYTE,LPWSTR,int,UINT);
-int WINAPI ToUnicodeEx(UINT,UINT,PBYTE,LPWSTR,int,UINT,HKL);
+int WINAPI ToAscii(UINT,UINT,CONST PBYTE,LPWORD,UINT);
+int WINAPI ToAsciiEx(UINT,UINT,CONST PBYTE,LPWORD,UINT,HKL);
+int WINAPI ToUnicode(UINT,UINT,CONST PBYTE,LPWSTR,int,UINT);
+int WINAPI ToUnicodeEx(UINT,UINT,CONST PBYTE,LPWSTR,int,UINT,HKL);
 BOOL WINAPI TrackMouseEvent(LPTRACKMOUSEEVENT);
 BOOL WINAPI TrackPopupMenu(HMENU,UINT,int,int,int,HWND,LPCRECT);
 BOOL WINAPI TrackPopupMenuEx(HMENU,UINT,int,int,HWND,LPTPMPARAMS);
@@ -4256,10 +4483,13 @@ SHORT WINAPI VkKeyScanW(WCHAR);
 DWORD WINAPI WaitForInputIdle(HANDLE,DWORD);
 BOOL WINAPI WaitMessage(void);
 HWND WINAPI WindowFromDC(HDC hDC);
+#if (_WIN32_WINNT >= 0x0600)
+HWND WINAPI WindowFromPhysicalPoint(POINT);
+#endif
 HWND WINAPI WindowFromPoint(POINT);
 UINT WINAPI WinExec(LPCSTR,UINT);
-BOOL WINAPI WinHelpA(HWND,LPCSTR,UINT,DWORD);
-BOOL WINAPI WinHelpW(HWND,LPCWSTR,UINT,DWORD);
+BOOL WINAPI WinHelpA(HWND,LPCSTR,UINT,ULONG_PTR);
+BOOL WINAPI WinHelpW(HWND,LPCWSTR,UINT,ULONG_PTR);
 int WINAPIV wsprintfA(LPSTR,LPCSTR,...);
 int WINAPIV wsprintfW(LPWSTR,LPCWSTR,...);
 int WINAPI wvsprintfA(LPSTR,LPCSTR,va_list arglist);
@@ -4272,6 +4502,20 @@ BOOL WINAPI LockSetForegroundWindow(UINT);
 BOOL WINAPI SetLayeredWindowAttributes(HWND,COLORREF,BYTE,DWORD);
 #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)
@@ -4403,6 +4647,7 @@ typedef MONITORINFOEXW MONITORINFOEX, *LPMONITORINFOEX;
 #define PostAppMessage PostAppMessageW
 #define PostMessage PostMessageW
 #define PostThreadMessage PostThreadMessageW
+#define PrivateExtractIcons PrivateExtractIconsW
 #define RealGetWindowClass RealGetWindowClassW
 #define RegisterClass RegisterClassW
 #define RegisterClassEx RegisterClassExW
@@ -4435,9 +4680,8 @@ typedef MONITORINFOEXW MONITORINFOEX, *LPMONITORINFOEX;
 #define WinHelp WinHelpW
 #define wsprintf wsprintfW
 #define wvsprintf wvsprintfW
+
 #ifndef NOGDI
-typedef ICONMETRICSW ICONMETRICS,*LPICONMETRICS;
-typedef NONCLIENTMETRICSW NONCLIENTMETRICS,*LPNONCLIENTMETRICS;
 #define ChangeDisplaySettings ChangeDisplaySettingsW
 #define ChangeDisplaySettingsEx ChangeDisplaySettingsExW
 #define CreateDesktop CreateDesktopW
@@ -4571,6 +4815,7 @@ typedef MONITORINFOEXA MONITORINFOEX, *LPMONITORINFOEX;
 #define PostAppMessage PostAppMessageA
 #define PostMessage PostMessageA
 #define PostThreadMessage PostThreadMessageA
+#define PrivateExtractIcons PrivateExtractIconsA
 #define RealGetWindowClass RealGetWindowClassA
 #define RegisterClass RegisterClassA
 #define RegisterClassEx RegisterClassExA
@@ -4604,8 +4849,6 @@ typedef MONITORINFOEXA MONITORINFOEX, *LPMONITORINFOEX;
 #define wsprintf wsprintfA
 #define wvsprintf wvsprintfA
 #if defined(_WINGDI_) && !defined(NOGDI)
-typedef ICONMETRICSA ICONMETRICS,*LPICONMETRICS;
-typedef NONCLIENTMETRICSA NONCLIENTMETRICS,*LPNONCLIENTMETRICS;
 #define ChangeDisplaySettings ChangeDisplaySettingsA
 #define ChangeDisplaySettingsEx ChangeDisplaySettingsExA
 #define CreateDesktop CreateDesktopA
@@ -4616,6 +4859,10 @@ typedef NONCLIENTMETRICSA NONCLIENTMETRICS,*LPNONCLIENTMETRICS;
 #endif /* UNICODE */
 #endif /* RC_INVOKED */
 
+#ifdef _MSC_VER
+#pragma warning(pop)
+#endif
+
 #ifdef __cplusplus
 }
 #endif