Correct the number of parameters for StrRStrIA/W.
[wine] / include / winuser.h
index 0c1c40a..3cbd01f 100644 (file)
@@ -1,3 +1,21 @@
+/*
+ * Copyright (C) the Wine project
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
 #ifndef _WINUSER_
 #define _WINUSER_
 
 extern "C" {
 #endif
 
-#include "pshpack1.h"
+/* Define a bunch of callback types */
+
+#if defined(STRICT) || defined(__WINE__)
+typedef BOOL    (CALLBACK *DLGPROC)(HWND,UINT,WPARAM,LPARAM);
+typedef BOOL    (CALLBACK *DRAWSTATEPROC)(HDC,LPARAM,WPARAM,int,int);
+typedef INT     (CALLBACK *EDITWORDBREAKPROCA)(LPSTR,INT,INT,INT);
+typedef INT     (CALLBACK *EDITWORDBREAKPROCW)(LPWSTR,INT,INT,INT);
+typedef BOOL    (CALLBACK *GRAYSTRINGPROC)(HDC,LPARAM,INT);
+typedef LRESULT (CALLBACK *HOOKPROC)(INT,WPARAM,LPARAM);
+typedef BOOL    (CALLBACK *NAMEENUMPROCA)(LPSTR,LPARAM);
+typedef BOOL    (CALLBACK *NAMEENUMPROCW)(LPWSTR,LPARAM);
+typedef BOOL    (CALLBACK *PROPENUMPROCA)(HWND,LPCSTR,HANDLE);
+typedef BOOL    (CALLBACK *PROPENUMPROCW)(HWND,LPCWSTR,HANDLE);
+typedef BOOL    (CALLBACK *PROPENUMPROCEXA)(HWND,LPCSTR,HANDLE,ULONG_PTR);
+typedef BOOL    (CALLBACK *PROPENUMPROCEXW)(HWND,LPCWSTR,HANDLE,ULONG_PTR);
+typedef VOID    (CALLBACK *SENDASYNCPROC)(HWND,UINT,ULONG_PTR,LRESULT);
+typedef VOID    (CALLBACK *TIMERPROC)(HWND,UINT,UINT,DWORD);
+typedef VOID    (CALLBACK *WINEVENTPROC)(HWINEVENTHOOK,DWORD,HWND,LONG,LONG,
+                                         DWORD,DWORD);
+typedef BOOL    (CALLBACK *WNDENUMPROC)(HWND,LPARAM);
+
+#else
+typedef FARPROC DLGPROC;
+typedef FARPROC DRAWSTATEPROC;
+typedef FARPROC EDITWORDBREAKPROCA;
+typedef FARPROC EDITWORDBREAKPROCW;
+typedef FARPROC GRAYSTRINGPROC;
+typedef FARPROC HOOKPROC;
+typedef FARPROC NAMEENUMPROCA;
+typedef FARPROC NAMEENUMPROCW;
+typedef FARPROC PROPENUMPROCA;
+typedef FARPROC PROPENUMPROCW;
+typedef FARPROC PROPENUMPROCEXA;
+typedef FARPROC PROPENUMPROCEXW;
+typedef FARPROC SENDASYNCPROC;
+typedef FARPROC TIMERPROC;
+typedef FARPROC WINEVENTPROC;
+typedef FARPROC WNDENUMPROC;
+#endif /* STRICT || __WINE__ */
+
+typedef NAMEENUMPROCA WINSTAENUMPROCA;
+typedef NAMEENUMPROCA DESKTOPENUMPROCA;
+typedef NAMEENUMPROCW WINSTAENUMPROCW;
+typedef NAMEENUMPROCW DESKTOPENUMPROCW;
+
+typedef LRESULT (CALLBACK *WNDPROC)(HWND,UINT,WPARAM,LPARAM);
+
+DECL_WINELIB_TYPE_AW(DESKTOPENUMPROC)
+DECL_WINELIB_TYPE_AW(EDITWORDBREAKPROC)
+DECL_WINELIB_TYPE_AW(NAMEENUMPROC)
+DECL_WINELIB_TYPE_AW(PROPENUMPROC)
+DECL_WINELIB_TYPE_AW(PROPENUMPROCEX)
+DECL_WINELIB_TYPE_AW(WINSTAENUMPROC)
+
+
+typedef HANDLE HDWP;
+
+/* flags for FILTERKEYS dwFlags field */
+#define FKF_AVAILABLE       0x00000002
+#define FKF_CLICKON         0x00000040
+#define FKF_FILTERKEYSON    0x00000001
+#define FKF_HOTKEYACTIVE    0x00000004
+#define FKF_HOTKEYSOUND     0x00000010
+#define FKF_CONFIRMHOTKEY   0x00000008
+#define FKF_INDICATOR       0x00000020
+
+typedef struct tagFILTERKEYS
+{
+    UINT   cbSize;
+    DWORD  dwFlags;
+    DWORD  iWaitMSec;
+    DWORD  iDelayMSec;
+    DWORD  iRepeatMSec;
+    DWORD  iBounceMSec;
+} FILTERKEYS, *PFILTERKEYS, *LPFILTERKEYS;
+
+/* flags for TOGGLEKEYS dwFlags field */
+#define TKF_AVAILABLE       0x00000002
+#define TKF_CONFIRMHOTKEY   0x00000008
+#define TKF_HOTKEYACTIVE    0x00000004
+#define TKF_HOTKEYSOUND     0x00000010
+#define TKF_TOGGLEKEYSON    0x00000001
+
+typedef struct tagTOGGLEKEYS
+{
+    DWORD   cbSize;
+    DWORD   dwFlags;
+} TOGGLEKEYS, *PTOGGLEKEYS, *LPTOGGLEKEYS;
+
+/* flags for MOUSEKEYS dwFlags field */
+#define MKF_AVAILABLE       0x00000002
+#define MKF_CONFIRMHOTKEY   0x00000008
+#define MKF_HOTKEYACTIVE    0x00000004
+#define MKF_HOTKEYSOUND     0x00000010
+#define MKF_INDICATOR       0x00000020
+#define MKF_MOUSEKEYSON     0x00000001
+#define MKF_MODIFIERS       0x00000040
+#define MKF_REPLACENUMBERS  0x00000080
+
+typedef struct tagMOUSEKEYS
+{
+    UINT    cbSize;
+    DWORD   dwFlags;
+    DWORD   iMaxSpeed;
+    DWORD   iTimeToMaxSpeed;
+    DWORD   iCtrlSpeed;
+    DWORD   dwReserved1;
+    DWORD   dwReserved2;
+} MOUSEKEYS, *PMOUSEKEYS, *LPMOUSEKEYS;
+
+/* flags for STICKYKEYS dwFlags field */
+#define SKF_AUDIBLEFEEDBACK 0x00000040
+#define SKF_AVAILABLE       0x00000002
+#define SKF_CONFIRMHOTKEY   0x00000008
+#define SKF_HOTKEYACTIVE    0x00000004
+#define SKF_HOTKEYSOUND     0x00000010
+#define SKF_INDICATOR       0x00000020
+#define SKF_STICKYKEYSON    0x00000001
+#define SKF_TRISTATE        0x00000080
+#define SKF_TWOKEYSOFF      0x00000100
+
+typedef struct tagSTICKYKEYS
+{
+    DWORD   cbSize;
+    DWORD   dwFlags;
+} STICKYKEYS, *PSTICKYKEYS, *LPSTICKYKEYS;
+
+/* flags for ACCESSTIMEOUT dwFlags field */
+#define ATF_ONOFFFEEDBACK   0x00000002
+#define ATF_AVAILABLE       0x00000004
+#define ATF_TIMEOUTON       0x00000001
+
+typedef struct tagACCESSTIMEOUT
+{
+    UINT    cbSize;
+    DWORD   dwFlags;
+    DWORD   iTimeOutMSec;
+} ACCESSTIMEOUT, *PACCESSTIMEOUT, *LPACCESSTIMEOUT;
+
+/* flags for SERIALKEYS dwFlags field */
+#define SERKF_ACTIVE        0x00000008
+#define SERKF_AVAILABLE     0x00000002
+#define SERKF_INDICATOR     0x00000004
+#define SERKF_SERIALKEYSON  0x00000001
+
+typedef struct tagSERIALKEYSA
+{
+    UINT  cbSize;
+    DWORD  dwFlags;
+    LPSTR  lpszActivePort;
+    LPSTR  lpszPort;
+    UINT  iBaudRate;
+    UINT  iPortState;
+    UINT  iActive;
+} SERIALKEYSA, *LPSERIALKEYSA;
+
+typedef struct tagSERIALKEYSW {
+    UINT  cbSize;
+    DWORD   dwFlags;
+    LPWSTR  lpszActivePort;
+    LPWSTR  lpszPort;
+    UINT   iBaudRate;
+    UINT   iPortState;
+    UINT   iActive;
+} SERIALKEYSW,*LPSERIALKEYSW;
+
+DECL_WINELIB_TYPE_AW(SERIALKEYS)
+DECL_WINELIB_TYPE_AW(LPSERIALKEYS)
+
+/* flags for SOUNDSENTRY dwFlags field */
+#define SSF_AVAILABLE       0x00000002
+#define SSF_SOUNDSENTRYON   0x00000001
+
+#define SSTF_BORDER         0x00000002
+#define SSTF_CHARS          0x00000001
+#define SSTF_DISPLAY        0x00000003
+#define SSTF_NONE           0x00000000
+
+#define SSGF_DISPLAY        0x00000003
+#define SSGF_NONE           0x00000000
+
+#define SSWF_DISPLAY        0x00000003
+#define SSWF_NONE           0x00000000
+#define SSWF_TITLE          0x00000001
+#define SSWF_WINDOW         0x00000002
+
+typedef struct tagSOUNDSENTRYA
+{
+    UINT  cbSize;
+    DWORD  dwFlags;
+    DWORD  iFSTextEffect;
+    DWORD  iFSTextEffectMSec;
+    DWORD  iFSTextEffectColorBits;
+    DWORD  iFSGrafEffect;
+    DWORD  iFSGrafEffectMSec;
+    DWORD  iFSGrafEffectColor;
+    DWORD  iWindowsEffect;
+    DWORD  iWindowsEffectMSec;
+    LPSTR  lpszWindowsEffectDLL;
+    DWORD  iWindowsEffectOrdinal;
+} SOUNDSENTRYA, *LPSOUNDSENTRYA;
+
+typedef struct tagSOUNDSENTRYW
+{
+    UINT  cbSize;
+    DWORD  dwFlags;
+    DWORD  iFSTextEffect;
+    DWORD  iFSTextEffectMSec;
+    DWORD  iFSTextEffectColorBits;
+    DWORD  iFSGrafEffect;
+    DWORD  iFSGrafEffectMSec;
+    DWORD  iFSGrafEffectColor;
+    DWORD  iWindowsEffect;
+    DWORD  iWindowsEffectMSec;
+    LPWSTR  lpszWindowsEffectDLL;
+    DWORD  iWindowsEffectOrdinal;
+} SOUNDSENTRYW, *LPSOUNDSENTRYW;
+
+DECL_WINELIB_TYPE_AW(SOUNDSENTRY)
+DECL_WINELIB_TYPE_AW(LPSOUNDSENTRY)
 
 /* flags for HIGHCONTRAST dwFlags field */
 #define HCF_HIGHCONTRASTON  0x00000001
@@ -44,8 +281,34 @@ typedef struct
     UINT  paramH;
     DWORD   time;
     HWND  hwnd;
-} EVENTMSG, *LPEVENTMSG;
+} EVENTMSG, *PEVENTMSG, *LPEVENTMSG;
+
+/* WH_KEYBOARD_LL structure */
+typedef struct tagKBDLLHOOKSTRUCT
+{
+    DWORD   vkCode;
+    DWORD   scanCode;
+    DWORD   flags;
+    DWORD   time;
+    ULONG_PTR dwExtraInfo;
+} KBDLLHOOKSTRUCT, *LPKBDLLHOOKSTRUCT, *PKBDLLHOOKSTRUCT;
+
+#define LLKHF_EXTENDED   (KF_EXTENDED >> 8)
+#define LLKHF_INJECTED   0x00000010
+#define LLKHF_ALTDOWN    (KF_ALTDOWN >> 8)
+#define LLKHF_UP         (KF_UP >> 8)
+
+/* WH_MOUSE_LL structure */
+typedef struct tagMSLLHOOKSTRUCT
+{
+    POINT   pt;
+    DWORD   mouseData;
+    DWORD   flags;
+    DWORD   time;
+    ULONG_PTR dwExtraInfo;
+} MSLLHOOKSTRUCT, *LPMSLLHOOKSTRUCT, *PMSLLHOOKSTRUCT;
 
+#define LLMHF_INJECTED  0x00000001
 
     /* Mouse hook structure */
 
@@ -66,7 +329,7 @@ typedef struct
     UINT    wMessage;
     WPARAM  wParam;
     LPARAM    lParam;
-} HARDWAREHOOKSTRUCT, *LPHARDWAREHOOKSTRUCT;
+} HARDWAREHOOKSTRUCT, *PHARDWAREHOOKSTRUCT, *LPHARDWAREHOOKSTRUCT;
 
 
   /* Debug hook structure */
@@ -78,7 +341,7 @@ typedef struct
     LPARAM      lParam;
     WPARAM    wParam;
     INT       code;
-} DEBUGHOOKINFO, *LPDEBUGHOOKINFO;
+} DEBUGHOOKINFO, *PDEBUGHOOKINFO, *LPDEBUGHOOKINFO;
 
 #define HKL_PREV   0
 #define HKL_NEXT   1
@@ -92,11 +355,52 @@ typedef struct
 
 #define KL_NAMELENGTH      9
 
-  /***** Dialogs *****/
-#ifdef FSHIFT
-/* Gcc on Solaris has a version of this that we don't care about.  */
+typedef struct tagMOUSEINPUT
+{
+    LONG    dx;
+    LONG    dy;
+    DWORD   mouseData;
+    DWORD   dwFlags;
+    DWORD   time;
+    ULONG_PTR dwExtraInfo;
+} MOUSEINPUT, *PMOUSEINPUT, *LPMOUSEINPUT;
+
+typedef struct tagKEYBDINPUT
+{
+    WORD    wVk;
+    WORD    wScan;
+    DWORD   dwFlags;
+    DWORD   time;
+    ULONG_PTR dwExtraInfo;
+} KEYBDINPUT, *PKEYBDINPUT, *LPKEYBDINPUT;
+
+typedef struct tagHARDWAREINPUT
+{
+    DWORD   uMsg;
+    WORD    wParamL;
+    WORD    wParamH;
+} HARDWAREINPUT, *PHARDWAREINPUT, *LPHARDWAREINPUT;
+
+#define INPUT_MOUSE     0
+#define INPUT_KEYBOARD  1
+#define INPUT_HARDWARE  2
+
+typedef struct tagINPUT
+{
+    DWORD type;
+    union
+    {
+        MOUSEINPUT      mi;
+        KEYBDINPUT      ki;
+        HARDWAREINPUT   hi;
+    } DUMMYUNIONNAME;
+} INPUT, *PINPUT, *LPINPUT;
+
+
+/***** Dialogs *****/
+
+/* Gcc on Solaris has a version of this that we don't care about */
 #undef FSHIFT
-#endif
 
 #define        FVIRTKEY        TRUE          /* Assumed to be == TRUE */
 #define        FNOINVERT       0x02
@@ -136,32 +440,13 @@ typedef struct
 #define DT_RTLREADING       0x00020000
 #define DT_WORD_ELLIPSIS    0x00040000
 
-typedef struct
-{
-   LPARAM   lParam;
-   WPARAM16 wParam;
-   UINT16   message;
-   HWND16   hwnd;
-} CWPSTRUCT16, *LPCWPSTRUCT16;
-
 typedef struct
 {
   LPARAM        lParam;
   WPARAM      wParam;
   UINT        message;
   HWND        hwnd;
-} CWPSTRUCT, *LPCWPSTRUCT;
-
-
-
-typedef struct
-{
-  LRESULT       lResult;
-  LPARAM        lParam;
-  WPARAM16      wParam;
-  DWORD         message;
-  HWND16        hwnd;
-} CWPRETSTRUCT16, *LPCWPRETSTRUCT16;
+} CWPSTRUCT, *PCWPSTRUCT, *LPCWPSTRUCT;
 
 typedef struct
 {
@@ -170,7 +455,7 @@ typedef struct
   WPARAM      wParam;
   DWORD         message;
   HWND        hwnd;
-} CWPRETSTRUCT, *LPCWPRETSTRUCT;
+} CWPRETSTRUCT, *PCWPRETSTRUCT, *LPCWPRETSTRUCT;
 
 typedef struct
 {
@@ -180,7 +465,7 @@ typedef struct
     POINT  ptMinPosition WINE_PACKED;
     POINT  ptMaxPosition WINE_PACKED;
     RECT   rcNormalPosition WINE_PACKED;
-} WINDOWPLACEMENT, *LPWINDOWPLACEMENT;
+} WINDOWPLACEMENT, *PWINDOWPLACEMENT, *LPWINDOWPLACEMENT;
 
 
   /* WINDOWPLACEMENT flags */
@@ -189,6 +474,73 @@ typedef struct
 
 /***** Dialogs *****/
 
+#define MAKEINTRESOURCEA(i) (LPSTR)((DWORD)((WORD)(i)))
+#define MAKEINTRESOURCEW(i) (LPWSTR)((DWORD)((WORD)(i)))
+#define MAKEINTRESOURCE WINELIB_NAME_AW(MAKEINTRESOURCE)
+
+/* Predefined resource types */
+#define RT_CURSORA         MAKEINTRESOURCEA(1)
+#define RT_CURSORW         MAKEINTRESOURCEW(1)
+#define RT_CURSOR            WINELIB_NAME_AW(RT_CURSOR)
+#define RT_BITMAPA         MAKEINTRESOURCEA(2)
+#define RT_BITMAPW         MAKEINTRESOURCEW(2)
+#define RT_BITMAP            WINELIB_NAME_AW(RT_BITMAP)
+#define RT_ICONA           MAKEINTRESOURCEA(3)
+#define RT_ICONW           MAKEINTRESOURCEW(3)
+#define RT_ICON              WINELIB_NAME_AW(RT_ICON)
+#define RT_MENUA           MAKEINTRESOURCEA(4)
+#define RT_MENUW           MAKEINTRESOURCEW(4)
+#define RT_MENU              WINELIB_NAME_AW(RT_MENU)
+#define RT_DIALOGA         MAKEINTRESOURCEA(5)
+#define RT_DIALOGW         MAKEINTRESOURCEW(5)
+#define RT_DIALOG            WINELIB_NAME_AW(RT_DIALOG)
+#define RT_STRINGA         MAKEINTRESOURCEA(6)
+#define RT_STRINGW         MAKEINTRESOURCEW(6)
+#define RT_STRING            WINELIB_NAME_AW(RT_STRING)
+#define RT_FONTDIRA        MAKEINTRESOURCEA(7)
+#define RT_FONTDIRW        MAKEINTRESOURCEW(7)
+#define RT_FONTDIR           WINELIB_NAME_AW(RT_FONTDIR)
+#define RT_FONTA           MAKEINTRESOURCEA(8)
+#define RT_FONTW           MAKEINTRESOURCEW(8)
+#define RT_FONT              WINELIB_NAME_AW(RT_FONT)
+#define RT_ACCELERATORA    MAKEINTRESOURCEA(9)
+#define RT_ACCELERATORW    MAKEINTRESOURCEW(9)
+#define RT_ACCELERATOR       WINELIB_NAME_AW(RT_ACCELERATOR)
+#define RT_RCDATAA         MAKEINTRESOURCEA(10)
+#define RT_RCDATAW         MAKEINTRESOURCEW(10)
+#define RT_RCDATA            WINELIB_NAME_AW(RT_RCDATA)
+#define RT_MESSAGETABLEA   MAKEINTRESOURCEA(11)
+#define RT_MESSAGETABLEW   MAKEINTRESOURCEW(11)
+#define RT_MESSAGETABLE       WINELIB_NAME_AW(RT_MESSAGETABLE)
+#define RT_GROUP_CURSORA   MAKEINTRESOURCEA(12)
+#define RT_GROUP_CURSORW   MAKEINTRESOURCEW(12)
+#define RT_GROUP_CURSOR      WINELIB_NAME_AW(RT_GROUP_CURSOR)
+#define RT_GROUP_ICONA     MAKEINTRESOURCEA(14)
+#define RT_GROUP_ICONW     MAKEINTRESOURCEW(14)
+#define RT_GROUP_ICON        WINELIB_NAME_AW(RT_GROUP_ICON)
+#define RT_VERSIONA        MAKEINTRESOURCEA(16)
+#define RT_VERSIONW        MAKEINTRESOURCEW(16)
+#define RT_VERSION           WINELIB_NAME_AW(RT_VERSION)
+#define RT_DLGINCLUDEA     MAKEINTRESOURCEA(17)
+#define RT_DLGINCLUDEW     MAKEINTRESOURCEW(17)
+#define RT_DLGINCLUDE        WINELIB_NAME_AW(RT_DLGINCLUDE)
+#define RT_PLUGPLAYA       MAKEINTRESOURCEA(19)
+#define RT_PLUGPLAYW       MAKEINTRESOURCEW(19)
+#define RT_PLUGPLAY          WINELIB_NAME_AW(RT_PLUGPLAY)
+#define RT_VXDA            MAKEINTRESOURCEA(20)
+#define RT_VXDW            MAKEINTRESOURCEW(20)
+#define RT_VXD               WINELIB_NAME_AW(RT_VXD)
+#define RT_ANICURSORA      MAKEINTRESOURCEA(21)
+#define RT_ANICURSORW      MAKEINTRESOURCEW(21)
+#define RT_ANICURSOR         WINELIB_NAME_AW(RT_ANICURSOR)
+#define RT_ANIICONA        MAKEINTRESOURCEA(22)
+#define RT_ANIICONW        MAKEINTRESOURCEW(22)
+#define RT_ANIICON           WINELIB_NAME_AW(RT_ANIICON)
+#define RT_HTMLA           MAKEINTRESOURCEA(23)
+#define RT_HTMLW           MAKEINTRESOURCEW(23)
+#define RT_HTML              WINELIB_NAME_AW(RT_HTML)
+
+
   /* cbWndExtra bytes for dialog class */
 #define DLGWINDOWEXTRA      30
 
@@ -205,6 +557,7 @@ typedef struct
 #define BS_AUTORADIOBUTTON     0x00000009L
 #define BS_OWNERDRAW           0x0000000BL
 #define BS_LEFTTEXT            0x00000020L
+#define BS_RIGHTBUTTON         BS_LEFTTEXT
 
 #define BS_TEXT                0x00000000L
 #define BS_ICON                0x00000040L
@@ -240,6 +593,7 @@ typedef struct
   /* Dialog messages */
 #define DM_GETDEFID         (WM_USER+0)
 #define DM_SETDEFID         (WM_USER+1)
+#define DM_REPOSITION       (WM_USER+2)
 
 #define DC_HASDEFID         0x534b
 
@@ -276,15 +630,14 @@ typedef struct
 #define ES_AUTOVSCROLL  0x00000040
 #define ES_AUTOHSCROLL  0x00000080
 #define ES_NOHIDESEL    0x00000100
+#define ES_COMBO        0x00000200   /* Undocumented. Parent is a combobox */
 #define ES_OEMCONVERT   0x00000400
 #define ES_READONLY     0x00000800
 #define ES_WANTRETURN   0x00001000
 #define ES_NUMBER       0x00002000
 
 /* OEM Resource Ordinal Numbers */
-#define OBM_CLOSED          32731
-#define OBM_RADIOCHECK      32732
-#define OBM_TRTYPE          32733
+#define OBM_TRTYPE          32732
 #define OBM_LFARROWI        32734
 #define OBM_RGARROWI        32735
 #define OBM_DNARROWI        32736
@@ -320,9 +673,6 @@ typedef struct
 #define OBM_SIZE            32766
 #define OBM_OLD_CLOSE       32767
 
-#define OCR_BUMMER         100
-#define OCR_DRAGOBJECT     101
-
 #define OCR_NORMAL          32512
 #define OCR_IBEAM           32513
 #define OCR_WAIT            32514
@@ -337,23 +687,24 @@ typedef struct
 #define OCR_SIZEALL         32646
 #define OCR_ICOCUR          32647
 #define OCR_NO              32648
+#define OCR_HAND            32649
 #define OCR_APPSTARTING     32650
-#define OCR_HELP            32651  /* only defined in wine */
+#define OCR_HELP            32651
+
+/* only defined in wine (FIXME) */
+#define OCR_DRAGOBJECT      32653
 
 #define OIC_SAMPLE          32512
 #define OIC_HAND            32513
 #define OIC_QUES            32514
 #define OIC_BANG            32515
 #define OIC_NOTE            32516
-#define OIC_PORTRAIT        32517
-#define OIC_LANDSCAPE       32518
-#define OIC_WINEICON        32519
-#define OIC_FOLDER          32520
-#define OIC_FOLDER2         32521
-#define OIC_FLOPPY          32522
-#define OIC_CDROM           32523
-#define OIC_HDISK           32524
-#define OIC_NETWORK         32525
+#define OIC_WINLOGO         32517
+#define OIC_WARNING         OIC_BANG
+#define OIC_ERROR           OIC_HAND
+#define OIC_INFORMATION     OIC_NOTE
+
+#ifndef NOCOLOR
 
 #define COLOR_SCROLLBAR                    0
 #define COLOR_BACKGROUND           1
@@ -402,6 +753,11 @@ typedef struct
 #define CTLCOLOR_SCROLLBAR          5
 #define CTLCOLOR_STATIC             6
 
+COLORREF    WINAPI GetSysColor(INT);
+BOOL        WINAPI SetSysColors(INT,const INT*,const COLORREF*);
+
+#endif /* NOCOLOR */
+
 /* Edit control messages */
 #define EM_GETSEL                0x00b0
 #define EM_SETSEL                0x00b1
@@ -466,6 +822,93 @@ typedef struct
 #define EC_USEFONTINFO 0xffff
 
 
+  /* GetSystemMetrics() codes */
+#define SM_CXSCREEN           0
+#define SM_CYSCREEN            1
+#define SM_CXVSCROLL           2
+#define SM_CYHSCROLL          3
+#define SM_CYCAPTION          4
+#define SM_CXBORDER           5
+#define SM_CYBORDER           6
+#define SM_CXDLGFRAME         7
+#define SM_CYDLGFRAME         8
+#define SM_CYVTHUMB           9
+#define SM_CXHTHUMB          10
+#define SM_CXICON            11
+#define SM_CYICON            12
+#define SM_CXCURSOR          13
+#define SM_CYCURSOR          14
+#define SM_CYMENU            15
+#define SM_CXFULLSCREEN       16
+#define SM_CYFULLSCREEN       17
+#define SM_CYKANJIWINDOW      18
+#define SM_MOUSEPRESENT       19
+#define SM_CYVSCROLL         20
+#define SM_CXHSCROLL         21
+#define SM_DEBUG             22
+#define SM_SWAPBUTTON        23
+#define SM_RESERVED1         24
+#define SM_RESERVED2         25
+#define SM_RESERVED3         26
+#define SM_RESERVED4         27
+#define SM_CXMIN             28
+#define SM_CYMIN             29
+#define SM_CXSIZE            30
+#define SM_CYSIZE            31
+#define SM_CXFRAME           32
+#define SM_CYFRAME           33
+#define SM_CXMINTRACK        34
+#define SM_CYMINTRACK        35
+#define SM_CXDOUBLECLK        36
+#define SM_CYDOUBLECLK        37
+#define SM_CXICONSPACING      38
+#define SM_CYICONSPACING      39
+#define SM_MENUDROPALIGNMENT  40
+#define SM_PENWINDOWS         41
+#define SM_DBCSENABLED        42
+#define SM_CMOUSEBUTTONS      43
+#define SM_CXFIXEDFRAME              SM_CXDLGFRAME
+#define SM_CYFIXEDFRAME              SM_CYDLGFRAME
+#define SM_CXSIZEFRAME       SM_CXFRAME
+#define SM_CYSIZEFRAME       SM_CYFRAME
+#define SM_SECURE            44
+#define SM_CXEDGE            45
+#define SM_CYEDGE            46
+#define SM_CXMINSPACING              47
+#define SM_CYMINSPACING              48
+#define SM_CXSMICON          49
+#define SM_CYSMICON          50
+#define SM_CYSMCAPTION       51
+#define SM_CXSMSIZE          52
+#define SM_CYSMSIZE          53
+#define SM_CXMENUSIZE        54
+#define SM_CYMENUSIZE        55
+#define SM_ARRANGE           56
+#define SM_CXMINIMIZED       57
+#define SM_CYMINIMIZED       58
+#define SM_CXMAXTRACK        59
+#define SM_CYMAXTRACK        60
+#define SM_CXMAXIMIZED       61
+#define SM_CYMAXIMIZED       62
+#define SM_NETWORK           63
+#define SM_CLEANBOOT         67
+#define SM_CXDRAG            68
+#define SM_CYDRAG            69
+#define SM_SHOWSOUNDS        70
+#define SM_CXMENUCHECK       71
+#define SM_CYMENUCHECK       72
+#define SM_SLOWMACHINE       73
+#define SM_MIDEASTENABLED     74
+#define SM_MOUSEWHEELPRESENT  75
+#define SM_XVIRTUALSCREEN     76
+#define SM_YVIRTUALSCREEN     77
+#define SM_CXVIRTUALSCREEN    78
+#define SM_CYVIRTUALSCREEN    79
+#define SM_CMONITORS          80
+#define SM_SAMEDISPLAYFORMAT  81
+#define SM_CMETRICS           83
+
+
 /* Messages */
 
   /* WM_GETDLGCODE values */
@@ -547,7 +990,11 @@ typedef struct
 #define WM_COPYDATA            0x004a
 #define WM_CANCELJOURNAL       0x004b
 #define WM_NOTIFY              0x004e
+#define WM_INPUTLANGCHANGEREQUEST       0x0050
+#define WM_INPUTLANGCHANGE              0x0051
+#define WM_TCARD                0x0052
 #define WM_HELP                        0x0053
+#define WM_USERCHANGED         0x0054
 #define WM_NOTIFYFORMAT                0x0055
 
 #define WM_CONTEXTMENU         0x007b
@@ -581,6 +1028,10 @@ typedef struct
 #define WM_NCMBUTTONUP      0x00a8
 #define WM_NCMBUTTONDBLCLK  0x00a9
 
+#define WM_NCXBUTTONDOWN    0x00ab
+#define WM_NCXBUTTONUP      0x00ac
+#define WM_NCXBUTTONDBLCLK  0x00ad
+
   /* Keyboard messages */
 #define WM_KEYDOWN          0x0100
 #define WM_KEYUP            0x0101
@@ -599,7 +1050,7 @@ typedef struct
 #define WM_IME_COMPOSITION          0x010f
 #define WM_IME_KEYLAST              0x010f
 
-#define WM_INITDIALOG       0x0110 
+#define WM_INITDIALOG       0x0110
 #define WM_COMMAND          0x0111
 #define WM_SYSCOMMAND       0x0112
 #define WM_TIMER           0x0113
@@ -617,6 +1068,16 @@ typedef struct
 #define WM_MENUCHAR         0x0120
 #define WM_ENTERIDLE        0x0121
 
+#define WM_MENURBUTTONUP    0x0122
+#define WM_MENUDRAG         0x0123
+#define WM_MENUGETOBJECT    0x0124
+#define WM_UNINITMENUPOPUP  0x0125
+#define WM_MENUCOMMAND      0x0126
+
+#define WM_CHANGEUISTATE    0x0127
+#define WM_UPDATEUISTATE    0x0128
+#define WM_QUERYUISTATE     0x0129
+
 #define WM_LBTRACKPOINT     0x0131
 
   /* Win32 CTLCOLOR messages */
@@ -639,9 +1100,16 @@ typedef struct
 #define WM_MBUTTONDOWN     0x0207
 #define WM_MBUTTONUP       0x0208
 #define WM_MBUTTONDBLCLK    0x0209
-#define WM_MOUSEFIRST      WM_MOUSEMOVE
-#define WM_MOUSELAST       WM_MBUTTONDBLCLK
+#define WM_MOUSEWHEEL       0x020A
+#define WM_XBUTTONDOWN      0x020B
+#define WM_XBUTTONUP        0x020C
+#define WM_XBUTTONDBLCLK    0x020D
+
+#define WM_MOUSEFIRST       0x0200
+#define WM_MOUSELAST        0x020D
 
+#define WHEEL_DELTA      120
+#define WHEEL_PAGESCROLL  (UINT_MAX)
 #define WM_PARENTNOTIFY     0x0210
 #define WM_ENTERMENULOOP    0x0211
 #define WM_EXITMENULOOP     0x0212
@@ -651,6 +1119,18 @@ typedef struct
 #define WM_SIZING          0x0214
 #define WM_CAPTURECHANGED   0x0215
 #define WM_MOVING          0x0216
+#define WM_POWERBROADCAST   0x0218
+#define WM_DEVICECHANGE     0x0219
+
+/* wParam for WM_SIZING message */
+#define WMSZ_LEFT           1
+#define WMSZ_RIGHT          2
+#define WMSZ_TOP            3
+#define WMSZ_TOPLEFT        4
+#define WMSZ_TOPRIGHT       5
+#define WMSZ_BOTTOM         6
+#define WMSZ_BOTTOMLEFT     7
+#define WMSZ_BOTTOMRIGHT    8
 
   /* MDI messages */
 #define WM_MDICREATE       0x0220
@@ -722,46 +1202,16 @@ typedef struct
 #define WM_PRINT             0x0317
 #define WM_PRINTCLIENT       0x0318
 
-  /* FIXME: This does not belong to any libwine interface header */
-  /* MFC messages [360-38f] */
-
-#define WM_QUERYAFXWNDPROC  0x0360
-#define WM_SIZEPARENT       0x0361
-#define WM_SETMESSAGESTRING 0x0362
-#define WM_IDLEUPDATECMDUI  0x0363 
-#define WM_INITIALUPDATE    0x0364
-#define WM_COMMANDHELP      0x0365
-#define WM_HELPHITTEST      0x0366
-#define WM_EXITHELPMODE     0x0367
-#define WM_RECALCPARENT     0x0368
-#define WM_SIZECHILD        0x0369
-#define WM_KICKIDLE         0x036A 
-#define WM_QUERYCENTERWND   0x036B
-#define WM_DISABLEMODAL     0x036C
-#define WM_FLOATSTATUS      0x036D 
-#define WM_ACTIVATETOPLEVEL 0x036E 
-#define WM_QUERY3DCONTROLS  0x036F 
-#define WM_SOCKET_NOTIFY    0x0373
-#define WM_SOCKET_DEAD      0x0374
-#define WM_POPMESSAGESTRING 0x0375
-#define WM_OCC_LOADFROMSTREAM           0x0376
-#define WM_OCC_LOADFROMSTORAGE          0x0377
-#define WM_OCC_INITNEW                  0x0378
-#define WM_OCC_LOADFROMSTREAM_EX        0x037A
-#define WM_OCC_LOADFROMSTORAGE_EX       0x037B
-#define WM_QUEUE_SENTINEL   0x0379
-
 #define WM_PENWINFIRST      0x0380
 #define WM_PENWINLAST       0x038F
 
-/* end of MFC messages */
-
-/* FIXME: The following two lines do not belong to any libwine interface header */
-#define WM_COALESCE_FIRST    0x0390
-#define WM_COALESCE_LAST     0x039F
 
 #define WM_APP               0x8000
 
+/* MsgWaitForMultipleObjectsEx flags */
+#define MWMO_WAITALL         0x0001
+#define MWMO_ALERTABLE       0x0002
+#define MWMO_INPUTAVAILABLE  0x0004
 
 #define DLGC_WANTARROWS      0x0001
 #define DLGC_WANTTAB         0x0002
@@ -784,7 +1234,7 @@ typedef struct
 #define IDYES               6
 #define IDNO                7
 #define IDCLOSE             8
-#define IDHELP              9      
+#define IDHELP              9
 
 /****** Window classes ******/
 
@@ -833,7 +1283,7 @@ typedef struct
     BYTE    rgbReserved[32];
 } PAINTSTRUCT, *PPAINTSTRUCT, *LPPAINTSTRUCT;
 
-typedef struct 
+typedef struct
 {
     HMENU   hWindowMenu;
     UINT    idFirstChild;
@@ -869,7 +1319,7 @@ typedef struct
 DECL_WINELIB_TYPE_AW(MDICREATESTRUCT)
 DECL_WINELIB_TYPE_AW(LPMDICREATESTRUCT)
 
-#define MDITILE_VERTICAL     0x0000   
+#define MDITILE_VERTICAL     0x0000
 #define MDITILE_HORIZONTAL   0x0001
 #define MDITILE_SKIPDISABLED 0x0002
 
@@ -880,16 +1330,17 @@ typedef struct {
     DWORD   styleNew;
 } STYLESTRUCT, *LPSTYLESTRUCT;
 
+#define WC_DIALOGA MAKEINTATOMA(0x8002)
+#define WC_DIALOGW MAKEINTATOMW(0x8002)
+#define WC_DIALOG  WINELIB_NAME_AW(WC_DIALOG)
+
   /* Offsets for GetWindowLong() and GetWindowWord() */
 #define GWL_USERDATA        (-21)
 #define GWL_EXSTYLE         (-20)
 #define GWL_STYLE           (-16)
-#define GWW_ID              (-12)
-#define GWL_ID              GWW_ID
-#define GWW_HWNDPARENT      (-8)
-#define GWL_HWNDPARENT      GWW_HWNDPARENT
-#define GWW_HINSTANCE       (-6)
-#define GWL_HINSTANCE       GWW_HINSTANCE
+#define GWL_ID              (-12)
+#define GWL_HWNDPARENT      (-8)
+#define GWL_HINSTANCE       (-6)
 #define GWL_WNDPROC         (-4)
 #define DWL_MSGRESULT      0
 #define DWL_DLGPROC        4
@@ -903,6 +1354,11 @@ typedef struct {
 #define GW_OWNER       4
 #define GW_CHILD       5
 
+/* GetAncestor() constants */
+#define GA_PARENT       1
+#define GA_ROOT         2
+#define GA_ROOTOWNER    3
+
   /* WM_GETMINMAXINFO struct */
 typedef struct
 {
@@ -1011,6 +1467,12 @@ typedef struct
 #define HTSIZEFIRST         HTLEFT
 #define HTSIZELAST          HTBOTTOMRIGHT
 
+/* SendMessageTimeout flags */
+#define SMTO_NORMAL              0x0000
+#define SMTO_BLOCK               0x0001
+#define SMTO_ABORTIFHUNG         0x0002
+#define SMTO_NOTIMEOUTIFNOTHUNG  0x0008
+
   /* WM_SYSCOMMAND parameters */
 #ifdef SC_SIZE /* at least HP-UX: already defined in /usr/include/sys/signal.h */
 #undef SC_SIZE
@@ -1031,6 +1493,16 @@ typedef struct
 #define SC_TASKLIST     0xf130
 #define SC_SCREENSAVE   0xf140
 #define SC_HOTKEY       0xf150
+  /* Win32 4.0 */
+#define SC_DEFAULT      0xf160
+#define SC_MONITORPOWER 0xf170
+#define SC_CONTEXTHELP  0xf180
+#define SC_SEPARATOR    0xf00f
+
+/* obsolete names(SC_ICON and SC_ZOOM) */
+#define SC_ICON   SC_MINIMIZE
+#define SC_ZOOM   SC_MAXIMIZE
+
 
 #define CS_VREDRAW          0x0001
 #define CS_HREDRAW          0x0002
@@ -1053,27 +1525,38 @@ typedef struct
 #define PRF_ERASEBKGND      0x00000008L
 #define PRF_CHILDREN        0x00000010L
 #define PRF_OWNED           0x00000020L
+
   /* Offsets for GetClassLong() and GetClassWord() */
 #define GCL_MENUNAME        (-8)
-#define GCW_HBRBACKGROUND   (-10)
-#define GCL_HBRBACKGROUND   GCW_HBRBACKGROUND
-#define GCW_HCURSOR         (-12)
-#define GCL_HCURSOR         GCW_HCURSOR
-#define GCW_HICON           (-14)
-#define GCL_HICON           GCW_HICON
-#define GCW_HMODULE         (-16)
-#define GCL_HMODULE         GCW_HMODULE
-#define GCW_CBWNDEXTRA      (-18)
-#define GCL_CBWNDEXTRA      GCW_CBWNDEXTRA
-#define GCW_CBCLSEXTRA      (-20)
-#define GCL_CBCLSEXTRA      GCW_CBCLSEXTRA
+#define GCL_HBRBACKGROUND   (-10)
+#define GCL_HCURSOR         (-12)
+#define GCL_HICON           (-14)
+#define GCL_HMODULE         (-16)
+#define GCL_CBWNDEXTRA      (-18)
+#define GCL_CBCLSEXTRA      (-20)
 #define GCL_WNDPROC         (-24)
-#define GCW_STYLE           (-26)
-#define GCL_STYLE           GCW_STYLE
+#define GCL_STYLE           (-26)
 #define GCW_ATOM            (-32)
-#define GCW_HICONSM         (-34)
-#define GCL_HICONSM         GCW_HICONSM
+#define GCL_HICONSM         (-34)
+
+/* BroadcastSystemMessage flags */
+#define BSM_ALLCOMPONENTS        0x00000000
+#define BSM_VXDS                 0x00000001
+#define BSM_NETDRIVER            0x00000002
+#define BSM_INSTALLABLEDRIVERS   0x00000004
+#define BSM_APPLICATIONS         0x00000008
+
+#define BSF_QUERY                0x00000001
+#define BSF_IGNORECURRENTTASK    0x00000002
+#define BSF_FLUSHDISK            0x00000004
+#define BSF_NOHANG               0x00000008
+#define BSF_POSTMESSAGE          0x00000010
+#define BSF_FORCEIFHUNG          0x00000020
+#define BSF_NOTIMEOUTIFNOTHUNG   0x00000040
+#define BSF_ALLOWSFW             0x00000080
+#define BSF_SENDNOTIFYMESSAGE    0x00000100
+#define BSF_RETURNHDESK          0x00000200
+#define BSF_LUID                 0x00000400
 
 
 /***** Window hooks *****/
@@ -1094,11 +1577,12 @@ typedef struct
 #define WH_SHELL            10
 #define WH_FOREGROUNDIDLE   11
 #define WH_CALLWNDPROCRET   12
-#define WH_MAX              12
+#define WH_KEYBOARD_LL      13
+#define WH_MOUSE_LL         14
+#define WH_MAX              14
 
 #define WH_MINHOOK          WH_MIN
 #define WH_MAXHOOK          WH_MAX
-#define WH_NB_HOOKS         (WH_MAXHOOK-WH_MINHOOK+1)
 
   /* Hook action codes */
 #define HC_ACTION           0
@@ -1117,8 +1601,9 @@ typedef struct
 #define MSGF_SIZE           4
 #define MSGF_SCROLLBAR      5
 #define MSGF_NEXTWINDOW     6
-#define MSGF_MAINLOOP       8
-#define MSGF_USER        4096
+#define MSGF_MAX            8
+#define MSGF_USER           0x1000
+#define MSGF_DDEMGR         0x8001
 
 typedef struct
 {
@@ -1132,7 +1617,7 @@ typedef struct
     HBRUSH    hbrBackground;
     LPCSTR      lpszMenuName;
     LPCSTR      lpszClassName;
-} WNDCLASSA, *LPWNDCLASSA;
+} WNDCLASSA, *PWNDCLASSA, *LPWNDCLASSA;
 
 typedef struct
 {
@@ -1146,16 +1631,17 @@ typedef struct
     HBRUSH    hbrBackground;
     LPCWSTR     lpszMenuName;
     LPCWSTR     lpszClassName;
-} WNDCLASSW, *LPWNDCLASSW;
+} WNDCLASSW, *PWNDCLASSW, *LPWNDCLASSW;
 
 DECL_WINELIB_TYPE_AW(WNDCLASS)
+DECL_WINELIB_TYPE_AW(PWNDCLASS)
 DECL_WINELIB_TYPE_AW(LPWNDCLASS)
 
 typedef struct {
     DWORD dwData;
     DWORD cbData;
     LPVOID lpData;
-} COPYDATASTRUCT, *PCOPYDATASTRUCT, *LPCOPYDATASTRUCT;
+} COPYDATASTRUCT, *PCOPYDATASTRUCT;
 
 typedef struct {
     HMENU hmenuIn;
@@ -1163,32 +1649,47 @@ typedef struct {
     HWND  hwndNext;
 } MDINEXTMENU, *PMDINEXTMENU, *LPMDINEXTMENU;
 
-/* WinHelp internal structure */
-typedef struct {
-       WORD size;
-       WORD command;
-       LONG data;
-       LONG reserved;
-       WORD ofsFilename;
-       WORD ofsData;
-} WINHELP,*LPWINHELP;
+typedef struct
+{
+    DWORD   mkSize;
+    CHAR    mkKeyList;
+    CHAR    szKeyphrase[1];
+} MULTIKEYHELPA, *PMULTIKEYHELPA, *LPMULTIKEYHELPA;
 
 typedef struct
 {
-    UINT16  mkSize;
-    BYTE    mkKeyList;
-    BYTE    szKeyphrase[1];
-} MULTIKEYHELP, *LPMULTIKEYHELP;
+    DWORD   mkSize;
+    WCHAR   mkKeyList;
+    WCHAR   szKeyphrase[1];
+} MULTIKEYHELPW, *PMULTIKEYHELPW, *LPMULTIKEYHELPW;
+
+DECL_WINELIB_TYPE_AW(MULTIKEYHELP)
+DECL_WINELIB_TYPE_AW(PMULTIKEYHELP)
+DECL_WINELIB_TYPE_AW(LPMULTIKEYHELP)
+
+typedef struct {
+       int wStructSize;
+       int x;
+       int y;
+       int dx;
+       int dy;
+       int wMax;
+       CHAR rgchMember[2];
+} HELPWININFOA, *PHELPWININFOA, *LPHELPWININFOA;
 
 typedef struct {
-       WORD wStructSize;
-       WORD x;
-       WORD y;
-       WORD dx;
-       WORD dy;
-       WORD wMax;
-       char rgchMember[2];
-} HELPWININFO, *LPHELPWININFO;
+       int wStructSize;
+       int x;
+       int y;
+       int dx;
+       int dy;
+       int wMax;
+       WCHAR rgchMember[2];
+} HELPWININFOW, *PHELPWININFOW, *LPHELPWININFOW;
+
+DECL_WINELIB_TYPE_AW(HELPWININFO)
+DECL_WINELIB_TYPE_AW(PHELPWININFO)
+DECL_WINELIB_TYPE_AW(LPHELPWININFO)
 
 #define HELP_CONTEXT        0x0001
 #define HELP_QUIT           0x0002
@@ -1234,15 +1735,6 @@ typedef struct {
 #define        CDS_SETRECT             0x20000000
 #define        CDS_NORESET             0x10000000
 
-/* flags to FormatMessage */
-#define        FORMAT_MESSAGE_ALLOCATE_BUFFER  0x00000100
-#define        FORMAT_MESSAGE_IGNORE_INSERTS   0x00000200
-#define        FORMAT_MESSAGE_FROM_STRING      0x00000400
-#define        FORMAT_MESSAGE_FROM_HMODULE     0x00000800
-#define        FORMAT_MESSAGE_FROM_SYSTEM      0x00001000
-#define        FORMAT_MESSAGE_ARGUMENT_ARRAY   0x00002000
-#define        FORMAT_MESSAGE_MAX_WIDTH_MASK   0x000000FF
-
 typedef struct
 {
     UINT      cbSize;
@@ -1257,7 +1749,7 @@ typedef struct
     LPCSTR      lpszMenuName;
     LPCSTR      lpszClassName;
     HICON     hIconSm;
-} WNDCLASSEXA, *LPWNDCLASSEXA;
+} WNDCLASSEXA, *PWNDCLASSEXA, *LPWNDCLASSEXA;
 
 typedef struct
 {
@@ -1273,9 +1765,10 @@ typedef struct
     LPCWSTR     lpszMenuName;
     LPCWSTR     lpszClassName;
     HICON     hIconSm;
-} WNDCLASSEXW, *LPWNDCLASSEXW;
+} WNDCLASSEXW, *PWNDCLASSEXW, *LPWNDCLASSEXW;
 
 DECL_WINELIB_TYPE_AW(WNDCLASSEX)
+DECL_WINELIB_TYPE_AW(PWNDCLASSEX)
 DECL_WINELIB_TYPE_AW(LPWNDCLASSEX)
 
 typedef struct tagMSG
@@ -1286,11 +1779,11 @@ typedef struct tagMSG
     LPARAM    lParam;
     DWORD     time;
     POINT   pt;
-} MSG, *LPMSG;
+} MSG, *PMSG, *LPMSG;
 
 #define POINTSTOPOINT(pt, pts)                          \
         { (pt).x = (LONG)(SHORT)LOWORD(*(LONG*)&pts);   \
-          (pt).y = (LONG)(SHORT)HIWORD(*(LONG*)&pts); }          
+          (pt).y = (LONG)(SHORT)HIWORD(*(LONG*)&pts); }
 
 #define POINTTOPOINTS(pt)      (MAKELONG((short)((pt).x), (short)((pt).y)))
 
@@ -1303,7 +1796,7 @@ typedef struct {
        DWORD           yHotspot;
        HBITMAP hbmMask;
        HBITMAP hbmColor;
-} ICONINFO,*LPICONINFO;
+} ICONINFO, *PICONINFO;
 
 
 /* this is the 6 byte accel struct used in Win32 when presented to the user */
@@ -1315,16 +1808,6 @@ typedef struct
     WORD   cmd;
 } ACCEL, *LPACCEL;
 
-/* this is the 8 byte accel struct used in Win32 resources (internal only) */
-typedef struct
-{
-    BYTE   fVirt;
-    BYTE   pad0;
-    WORD   key;
-    WORD   cmd;
-    WORD   pad1;
-} PE_ACCEL, *LPPE_ACCEL;
-
 
 /* Flags for TrackPopupMenu */
 #define TPM_LEFTBUTTON    0x0000
@@ -1340,7 +1823,7 @@ typedef struct
 #define TPM_NONOTIFY      0x0080
 #define TPM_RETURNCMD     0x0100
 
-typedef struct 
+typedef struct
 {
     UINT   cbSize;
     RECT   rcExclude;
@@ -1371,14 +1854,17 @@ typedef struct {
   HMENU   hSubMenu;
   HBITMAP hbmpChecked;
   HBITMAP hbmpUnchecked;
-  DWORD     dwItemData;
-  LPWSTR    dwTypeData;
+  DWORD   dwItemData;
+  LPWSTR  dwTypeData;
   UINT    cch;
   HBITMAP hbmpItem;
 } MENUITEMINFOW, *LPMENUITEMINFOW;
 
 DECL_WINELIB_TYPE_AW(MENUITEMINFO)
 DECL_WINELIB_TYPE_AW(LPMENUITEMINFO)
+typedef const MENUITEMINFOA *LPCMENUITEMINFOA;
+typedef const MENUITEMINFOW *LPCMENUITEMINFOW;
+DECL_WINELIB_TYPE_AW(LPCMENUITEMINFO)
 
 typedef struct {
   DWORD   cbSize;
@@ -1390,7 +1876,7 @@ typedef struct {
   DWORD   dwMenuData;
 } MENUINFO, *LPMENUINFO;
 
-typedef MENUINFO const * LPCMENUINFO;
+typedef const MENUINFO *LPCMENUINFO;
 
 #define MIM_MAXHEIGHT          0x00000001
 #define MIM_BACKGROUND         0x00000002
@@ -1438,9 +1924,6 @@ typedef PVOID *LPMENUTEMPLATE;
 #define HBMMENU_POPUP_MAXIMIZE ((HBITMAP) 10)
 #define HBMMENU_POPUP_MINIMIZE ((HBITMAP) 11)
 
-/* DrawState defines ... */
-typedef BOOL (CALLBACK *DRAWSTATEPROC)(HDC,LPARAM,WPARAM,INT,INT);
-
 /* WM_H/VSCROLL commands */
 #define SB_LINEUP           0
 #define SB_LINELEFT         0
@@ -1507,13 +1990,14 @@ typedef BOOL (CALLBACK *DRAWSTATEPROC)(HDC,LPARAM,WPARAM,INT,INT);
 #define BN_UNHILITE            3
 #define BN_DISABLE             4
 #define BN_DOUBLECLICKED       5
+#define BN_DBLCLK              BN_DOUBLECLICKED
 
 /* Button states */
 #define BST_UNCHECKED        0x0000
 #define BST_CHECKED          0x0001
 #define BST_INDETERMINATE    0x0002
 #define BST_PUSHED           0x0004
-#define BST_FOCUS            0x0008      
+#define BST_FOCUS            0x0008
 
 /* Static Control Styles */
 #define SS_LEFT             0x00000000L
@@ -1551,6 +2035,12 @@ typedef BOOL (CALLBACK *DRAWSTATEPROC)(HDC,LPARAM,WPARAM,INT,INT);
 #define STM_GETICON       0x0171
 #define STM_SETIMAGE        0x0172
 #define STM_GETIMAGE        0x0173
+#define STM_MSGMAX          0x0174
+
+#define STN_CLICKED         0
+#define STN_DBLCLK          1
+#define STN_ENABLE          2
+#define STN_DISABLE         3
 
 /* Scrollbar messages */
 #define SBM_SETPOS             0x00e0
@@ -1573,8 +2063,10 @@ typedef struct
     INT     nPos;
     INT     nTrackPos;
 } SCROLLINFO, *LPSCROLLINFO;
-/* GetScrollInfo() flags */ 
+
+typedef const SCROLLINFO *LPCSCROLLINFO;
+
+/* GetScrollInfo() flags */
 #define SIF_RANGE           0x0001
 #define SIF_PAGE            0x0002
 #define SIF_POS             0x0004
@@ -1776,7 +2268,7 @@ typedef struct
 #define        HELPINFO_MENUITEM       0x0002
 
 /* Structure pointed to by lParam of WM_HELP */
-typedef struct                 
+typedef struct
 {
     UINT       cbSize;         /* Size in bytes of this struct  */
     INT        iContextType;   /* Either HELPINFO_WINDOW or HELPINFO_MENUITEM */
@@ -1800,7 +2292,7 @@ typedef struct
     DWORD      dwContextHelpId;
     MSGBOXCALLBACK     lpfnMsgBoxCallback;
     DWORD      dwLanguageId;
-} MSGBOXPARAMSA,*LPMSGBOXPARAMSA;
+} MSGBOXPARAMSA, *PMSGBOXPARAMSA, *LPMSGBOXPARAMSA;
 
 typedef struct
 {
@@ -1814,35 +2306,22 @@ typedef struct
     DWORD      dwContextHelpId;
     MSGBOXCALLBACK     lpfnMsgBoxCallback;
     DWORD      dwLanguageId;
-} MSGBOXPARAMSW,*LPMSGBOXPARAMSW;
+} MSGBOXPARAMSW, *PMSGBOXPARAMSW, *LPMSGBOXPARAMSW;
 
 DECL_WINELIB_TYPE_AW(MSGBOXPARAMS)
+DECL_WINELIB_TYPE_AW(PMSGBOXPARAMS)
 DECL_WINELIB_TYPE_AW(LPMSGBOXPARAMS)
 
-typedef struct _numberfmt32a {
-    UINT NumDigits;
-    UINT LeadingZero;
-    UINT Grouping;
-    LPCSTR lpDecimalSep;
-    LPCSTR lpThousandSep;
-    UINT NegativeOrder;
-} NUMBERFMTA;
-
-typedef struct _numberfmt32w {
-    UINT NumDigits;
-    UINT LeadingZero;
-    UINT Grouping;
-    LPCWSTR lpDecimalSep;
-    LPCWSTR lpThousandSep;
-    UINT NegativeOrder;
-} NUMBERFMTW;
-
 #define MONITOR_DEFAULTTONULL       0x00000000
 #define MONITOR_DEFAULTTOPRIMARY    0x00000001
 #define MONITOR_DEFAULTTONEAREST    0x00000002
 
 #define MONITORINFOF_PRIMARY        0x00000001
 
+#ifndef CCHDEVICENAME
+#define CCHDEVICENAME 32
+#endif
+
 typedef struct tagMONITORINFO
 {
     DWORD   cbSize;
@@ -1868,6 +2347,8 @@ DECL_WINELIB_TYPE_AW(LPMONITORINFOEX)
 
 typedef BOOL  (CALLBACK *MONITORENUMPROC)(HMONITOR,HDC,LPRECT,LPARAM);
 
+#include "pshpack2.h"
+
 /* FIXME: use this instead of LPCVOID for CreateDialogIndirectParam
    and DialogBoxIndirectParam */
 typedef struct tagDLGTEMPLATE
@@ -1883,10 +2364,10 @@ typedef struct tagDLGTEMPLATE
 
 typedef DLGTEMPLATE *LPDLGTEMPLATEA;
 typedef DLGTEMPLATE *LPDLGTEMPLATEW;
-#define LPDLGTEMPLATE WINELIB_NAME_AW(LPDLGTEMPLATE)
+DECL_WINELIB_TYPE_AW(LPDLGTEMPLATE)
 typedef const DLGTEMPLATE *LPCDLGTEMPLATEA;
 typedef const DLGTEMPLATE *LPCDLGTEMPLATEW;
-#define LPCDLGTEMPLATE WINELIB_NAME_AW(LPCDLGTEMPLATE)
+DECL_WINELIB_TYPE_AW(LPCDLGTEMPLATE)
 
 typedef struct tagDLGITEMTEMPLATE
 {
@@ -1899,13 +2380,14 @@ typedef struct tagDLGITEMTEMPLATE
     WORD id;
 } DLGITEMTEMPLATE;
 
+typedef DLGITEMTEMPLATE *PDLGITEMTEMPLATEA;
+typedef DLGITEMTEMPLATE *PDLGITEMTEMPLATEW;
+DECL_WINELIB_TYPE_AW(PDLGITEMTEMPLATE)
 typedef DLGITEMTEMPLATE *LPDLGITEMTEMPLATEA;
 typedef DLGITEMTEMPLATE *LPDLGITEMTEMPLATEW;
-#define LPDLGITEMTEMPLATE WINELIB_NAME_AW(LPDLGITEMTEMPLATE)
-typedef const DLGITEMTEMPLATE *LPCDLGITEMTEMPLATEA;
-typedef const DLGITEMTEMPLATE *LPCDLGITEMTEMPLATEW;
-#define LPCDLGITEMTEMPLATE WINELIB_NAME_AW(LPCDLGITEMTEMPLATE)
+DECL_WINELIB_TYPE_AW(LPDLGITEMTEMPLATE)
 
+#include "poppack.h"
 
   /* CBT hook values */
 #define HCBT_MOVESIZE      0
@@ -1956,7 +2438,6 @@ typedef struct
   /* keybd_event flags */
 #define KEYEVENTF_EXTENDEDKEY        0x0001
 #define KEYEVENTF_KEYUP              0x0002
-#define KEYEVENTF_WINE_FORCEEXTENDED 0x8000
 
   /* mouse_event flags */
 #define MOUSEEVENTF_MOVE        0x0001
@@ -1966,6 +2447,7 @@ typedef struct
 #define MOUSEEVENTF_RIGHTUP     0x0010
 #define MOUSEEVENTF_MIDDLEDOWN  0x0020
 #define MOUSEEVENTF_MIDDLEUP    0x0040
+#define MOUSEEVENTF_WHEEL       0x0800
 #define MOUSEEVENTF_ABSOLUTE    0x8000
 
 /* ExitWindows() flags */
@@ -2001,10 +2483,14 @@ typedef struct
 #define IDI_ASTERISKA    MAKEINTRESOURCEA(32516)
 #define IDI_ASTERISKW    MAKEINTRESOURCEW(32516)
 #define IDI_ASTERISK       WINELIB_NAME_AW(IDI_ASTERISK)
+#define IDI_WINLOGOA       MAKEINTRESOURCEA(32517)
+#define IDI_WINLOGOW       MAKEINTRESOURCEW(32517)
+#define IDI_WINLOGO        WINELIB_NAME_AW(IDI_WINLOGO)
+
+#define IDI_WARNING        IDI_EXCLAMATION
+#define IDI_ERROR          IDI_HAND
+#define IDI_INFORMATION    IDI_ASTERISK
 
-#define IDC_BUMMERA      MAKEINTRESOURCEA(100)
-#define IDC_BUMMERW      MAKEINTRESOURCEW(100)
-#define IDC_BUMMER         WINELIB_NAME_AW(IDC_BUMMER)
 #define IDC_ARROWA       MAKEINTRESOURCEA(32512)
 #define IDC_ARROWW       MAKEINTRESOURCEW(32512)
 #define IDC_ARROW          WINELIB_NAME_AW(IDC_ARROW)
@@ -2044,6 +2530,9 @@ typedef struct
 #define IDC_NOA          MAKEINTRESOURCEA(32648)
 #define IDC_NOW          MAKEINTRESOURCEW(32648)
 #define IDC_NO             WINELIB_NAME_AW(IDC_NO)
+#define IDC_HANDA        MAKEINTRESOURCEA(32649)
+#define IDC_HANDW        MAKEINTRESOURCEW(32649)
+#define IDC_HAND         WINELIB_NAME_AW(IDC_HAND)
 #define IDC_APPSTARTINGA MAKEINTRESOURCEA(32650)
 #define IDC_APPSTARTINGW MAKEINTRESOURCEW(32650)
 #define IDC_APPSTARTING    WINELIB_NAME_AW(IDC_APPSTARTING)
@@ -2054,7 +2543,7 @@ typedef struct
 #define MNC_IGNORE 0
 #define MNC_CLOSE 1
 #define MNC_EXECUTE 2
-#define MNC_SELECT 3 
+#define MNC_SELECT 3
 
 /* SystemParametersInfo */
 /* defines below are for all win versions */
@@ -2167,6 +2656,8 @@ typedef struct
 #define SPI_SETMOUSEHOVERTIME     103
 #define SPI_GETWHEELSCROLLLINES   104
 #define SPI_SETWHEELSCROLLLINES   105
+#define SPI_GETMENUSHOWDELAY      106
+#define SPI_SETMENUSHOWDELAY      107
 
 #define SPI_GETSHOWIMEUI          110
 #define SPI_SETSHOWIMEUI          111
@@ -2175,6 +2666,7 @@ typedef struct
 #define SPI_GETMOUSESPEED         112
 #define SPI_SETMOUSESPEED         113
 #define SPI_GETSCREENSAVERRUNNING 114
+#define SPI_GETDESKWALLPAPER      115
 
 #define SPI_GETACTIVEWINDOWTRACKING    0x1000
 #define SPI_SETACTIVEWINDOWTRACKING    0x1001
@@ -2205,6 +2697,7 @@ typedef struct
 #define SPIF_SENDWININICHANGE           2
 #define SPIF_SENDCHANGE                 SPIF_SENDWININICHANGE
 
+#if defined(_WINGDI_) && !defined(NOGDI)
 typedef struct {
        UINT            cbSize;
        INT             iBorderWidth;
@@ -2221,7 +2714,7 @@ typedef struct {
        LOGFONTA        lfMenuFont;
        LOGFONTA        lfStatusFont;
        LOGFONTA        lfMessageFont;
-} NONCLIENTMETRICSA,*LPNONCLIENTMETRICSA;
+} NONCLIENTMETRICSA, *PNONCLIENTMETRICSA, *LPNONCLIENTMETRICSA;
 
 typedef struct {
        UINT            cbSize;
@@ -2239,9 +2732,10 @@ typedef struct {
        LOGFONTW        lfMenuFont;
        LOGFONTW        lfStatusFont;
        LOGFONTW        lfMessageFont;
-} NONCLIENTMETRICSW,*LPNONCLIENTMETRICSW;
+} NONCLIENTMETRICSW, *PNONCLIENTMETRICSW, *LPNONCLIENTMETRICSW;
 
 DECL_WINELIB_TYPE_AW(NONCLIENTMETRICS)
+DECL_WINELIB_TYPE_AW(PNONCLIENTMETRICS)
 DECL_WINELIB_TYPE_AW(LPNONCLIENTMETRICS)
 
 typedef struct tagICONMETRICSA {
@@ -2250,7 +2744,7 @@ typedef struct tagICONMETRICSA {
     int iVertSpacing;
     int iTitleWrap;
     LOGFONTA lfFont;
-} ICONMETRICSA, *LPICONMETRICSA;
+} ICONMETRICSA, *PICONMETRICSA, *LPICONMETRICSA;
 
 typedef struct tagICONMETRICSW {
     UINT cbSize;
@@ -2258,10 +2752,34 @@ typedef struct tagICONMETRICSW {
     int iVertSpacing;
     int iTitleWrap;
     LOGFONTW lfFont;
-} ICONMETRICSW, *LPICONMETRICSW;
+} ICONMETRICSW, *PICONMETRICSW, *LPICONMETRICSW;
 
 DECL_WINELIB_TYPE_AW(ICONMETRICS)
+DECL_WINELIB_TYPE_AW(PICONMETRICS)
 DECL_WINELIB_TYPE_AW(LPICONMETRICS)
+#endif /* defined(_WINGDI_) && !defined(NOGDI) */
+
+#define ARW_BOTTOMLEFT              0x0000L
+#define ARW_BOTTOMRIGHT             0x0001L
+#define ARW_TOPLEFT                 0x0002L
+#define ARW_TOPRIGHT                0x0003L
+#define ARW_STARTMASK               0x0003L
+#define ARW_STARTRIGHT              0x0001L
+#define ARW_STARTTOP                0x0002L
+
+#define ARW_LEFT                    0x0000L
+#define ARW_RIGHT                   0x0000L
+#define ARW_UP                      0x0004L
+#define ARW_DOWN                    0x0004L
+#define ARW_HIDE                    0x0008L
+
+typedef struct tagMINIMIZEDMETRICS {
+    UINT cbSize;
+    int iWidth;
+    int iHorzGap;
+    int iVertGap;
+    int iArrange;
+} MINIMIZEDMETRICS, *PMINIMIZEDMETRICS, *LPMINIMIZEDMETRICS;
 
 /* Window Styles */
 #define WS_OVERLAPPED    0x00000000L
@@ -2319,8 +2837,12 @@ DECL_WINELIB_TYPE_AW(LPICONMETRICS)
 #define WS_EX_OVERLAPPEDWINDOW (WS_EX_WINDOWEDGE|WS_EX_CLIENTEDGE)
 #define WS_EX_PALETTEWINDOW    (WS_EX_WINDOWEDGE|WS_EX_TOOLWINDOW|WS_EX_TOPMOST)
 
+/* New Win2000 styles */
+#define WS_EX_LAYERED          0x00080000L
+
 /* WINE internal... */
 #define WS_EX_TRAYWINDOW       0x80000000L
+#define WS_EX_MANAGED          0x40000000L /* Window managed by the window system */
 
 /* Window scrolling */
 #define SW_SCROLLCHILDREN      0x0001
@@ -2341,6 +2863,17 @@ DECL_WINELIB_TYPE_AW(LPICONMETRICS)
 #define PM_REMOVE      0x0001
 #define PM_NOYIELD     0x0002
 
+/* AnimateWindow() flags */
+#define AW_SLIDE        0x00040000
+#define AW_ACTIVATE     0x00020000
+#define AW_BLEND        0x00080000
+#define AW_HIDE         0x00010000
+#define AW_CENTER       0x00000010
+#define AW_HOR_POSITIVE 0x00000001
+#define AW_HOR_NEGATIVE 0x00000002
+#define AW_VER_POSITIVE 0x00000004
+#define AW_VER_NEGATIVE 0x00000008
+
 /* WM_SHOWWINDOW wParam codes */
 #define SW_PARENTCLOSING    1
 #define SW_OTHERMAXIMIZED   2
@@ -2361,7 +2894,8 @@ DECL_WINELIB_TYPE_AW(LPICONMETRICS)
 #define SW_SHOWNA           8
 #define SW_RESTORE          9
 #define SW_SHOWDEFAULT     10
-#define SW_MAX             10
+#define SW_FORCEMINIMIZE    11
+#define SW_MAX              11
 #define SW_NORMALNA        0xCC        /* undoc. flag in MinMaximize */
 
   /* WM_SIZE message wParam values */
@@ -2403,6 +2937,23 @@ DECL_WINELIB_TYPE_AW(LPICONMETRICS)
 #define HWND_BOTTOM         ((HWND)1)
 #define HWND_TOPMOST        ((HWND)-1)
 #define HWND_NOTOPMOST      ((HWND)-2)
+#define HWND_MESSAGE        ((HWND)-3)
+
+/* GetDCEx flags */
+#define DCX_WINDOW           0x00000001
+#define DCX_CACHE            0x00000002
+#define DCX_NORESETATTRS     0x00000004
+#define DCX_CLIPCHILDREN     0x00000008
+#define DCX_CLIPSIBLINGS     0x00000010
+#define DCX_PARENTCLIP       0x00000020
+#define DCX_EXCLUDERGN       0x00000040
+#define DCX_INTERSECTRGN     0x00000080
+#define DCX_EXCLUDEUPDATE    0x00000100
+#define DCX_INTERSECTUPDATE  0x00000200
+#define DCX_LOCKWINDOWUPDATE 0x00000400
+#define DCX_USESTYLE         0x00010000
+#define DCX_NORECOMPUTE      0x00100000
+#define DCX_VALIDATE         0x00200000
 
 #define MF_INSERT          0x0000
 #define MF_CHANGE          0x0080
@@ -2565,10 +3116,13 @@ DECL_WINELIB_TYPE_AW(LPICONMETRICS)
 #define DFCS_INACTIVE           0x0100
 #define DFCS_PUSHED             0x0200
 #define DFCS_CHECKED            0x0400
+#define DFCS_TRANSPARENT        0x0800
+#define DFCS_HOT                0x1000
 #define DFCS_ADJUSTRECT         0x2000         /* exclude surrounding edge */
 #define DFCS_FLAT               0x4000
 #define DFCS_MONO               0x8000
 
+
 /* Image type */
 #define        DST_COMPLEX     0x0000
 #define        DST_TEXT        0x0001
@@ -2616,7 +3170,7 @@ typedef struct
     UINT     itemID;
     HWND     hwndItem;
     DWORD      itemData;
-} DELETEITEMSTRUCT, *LPDELETEITEMSTRUCT;
+} DELETEITEMSTRUCT, *PDELETEITEMSTRUCT, *LPDELETEITEMSTRUCT;
 
 
 typedef struct
@@ -2645,7 +3199,9 @@ typedef struct
 #define VK_RBUTTON          0x02
 #define VK_CANCEL           0x03
 #define VK_MBUTTON          0x04
-/*                          0x05-0x07  Undefined */
+#define VK_XBUTTON1         0x05
+#define VK_XBUTTON2         0x06
+/*                          0x07  Undefined */
 #define VK_BACK             0x08
 #define VK_TAB              0x09
 /*                          0x0A-0x0B  Undefined */
@@ -2786,8 +3342,12 @@ typedef struct
 #define VK_OEM_5            0xDC
 #define VK_OEM_6            0xDD
 #define VK_OEM_7            0xDE
-/*                          0xDF-0xE4  OEM specific */
-
+#define VK_OEM_8            0xDF
+/*                          0xE0       OEM specific */
+#define VK_OEM_AX           0xE1  /* "AX" key on Japanese AX keyboard */
+#define VK_OEM_102          0xE2  /* "<>" or "\|" on RT 102-key keyboard */
+#define VK_ICO_HELP         0xE3  /* Help key on ICO */
+#define VK_ICO_00           0xE4  /* 00 key on ICO */
 #define VK_PROCESSKEY       0xE5
 
 /*                          0xE6       OEM specific */
@@ -2803,13 +3363,33 @@ typedef struct
 #define VK_NONAME           0xFC
 #define VK_PA1              0xFD
 #define VK_OEM_CLEAR        0xFE
-  
+
   /* Key status flags for mouse events */
 #define MK_LBUTTON         0x0001
 #define MK_RBUTTON         0x0002
 #define MK_SHIFT           0x0004
 #define MK_CONTROL         0x0008
 #define MK_MBUTTON         0x0010
+#define MK_XBUTTON1         0x0020
+#define MK_XBUTTON2         0x0040
+
+
+#define WM_MOUSEHOVER       0x02A1
+#define WM_MOUSELEAVE       0x02A3
+
+#define TME_HOVER       0x00000001
+#define TME_LEAVE       0x00000002
+#define TME_QUERY       0x40000000
+#define TME_CANCEL      0x80000000
+
+#define HOVER_DEFAULT   0xFFFFFFFF
+
+typedef struct tagTRACKMOUSEEVENT {
+    DWORD cbSize;
+    DWORD dwFlags;
+    HWND  hwndTrack;
+    DWORD dwHoverTime;
+} TRACKMOUSEEVENT, *LPTRACKMOUSEEVENT;
 
   /* Queue status flags */
 #define QS_KEY         0x0001
@@ -2825,6 +3405,16 @@ typedef struct
 #define QS_ALLEVENTS   (QS_INPUT | QS_POSTMESSAGE | QS_TIMER | QS_PAINT | QS_HOTKEY)
 #define QS_ALLINPUT     (QS_ALLEVENTS | QS_SENDMESSAGE)
 
+/* Extra (undocumented) queue wake bits - see "Undoc. Windows" */
+#define QS_SMRESULT      0x8000
+
+/* InSendMessageEx flags */
+#define ISMEX_NOSEND      0x00000000
+#define ISMEX_SEND        0x00000001
+#define ISMEX_NOTIFY      0x00000002
+#define ISMEX_CALLBACK    0x00000004
+#define ISMEX_REPLIED     0x00000008
+
 #define DDL_READWRITE  0x0000
 #define DDL_READONLY   0x0001
 #define DDL_HIDDEN     0x0002
@@ -2854,15 +3444,18 @@ typedef struct
 #define CF_PENDATA          10
 #define CF_RIFF             11
 #define CF_WAVE             12
+#define CF_UNICODETEXT      13
 #define CF_ENHMETAFILE      14
 #define CF_HDROP            15
 #define CF_LOCALE           16
-#define CF_MAX              17
+#define CF_DIBV5            17
+#define CF_MAX              18
 
 #define CF_OWNERDISPLAY     0x0080
 #define CF_DSPTEXT          0x0081
 #define CF_DSPBITMAP        0x0082
 #define CF_DSPMETAFILEPICT  0x0083
+#define CF_DSPENHMETAFILE   0x008E
 
 /* "Private" formats don't get GlobalFree()'d */
 #define CF_PRIVATEFIRST     0x0200
@@ -2873,28 +3466,6 @@ typedef struct
 #define CF_GDIOBJLAST       0x03FF
 
 
-/* DragObject stuff */
-
-typedef struct
-{
-    HWND16     hWnd;
-    HANDLE16   hScope;
-    WORD       wFlags;
-    HANDLE16   hList;
-    HANDLE16   hOfStruct;
-    POINT16 pt WINE_PACKED;
-    LONG       l WINE_PACKED;
-} DRAGINFO, *LPDRAGINFO;
-
-#define DRAGOBJ_PROGRAM                0x0001
-#define DRAGOBJ_DATA           0x0002
-#define DRAGOBJ_DIRECTORY      0x0004
-#define DRAGOBJ_MULTIPLE       0x0008
-#define DRAGOBJ_EXTERNAL       0x8000
-
-#define DRAG_PRINT             0x544E5250
-#define DRAG_FILE              0x454C4946
-
 /* types of LoadImage */
 #define IMAGE_BITMAP   0
 #define IMAGE_ICON     1
@@ -2923,17 +3494,153 @@ typedef struct
 #define DI_COMPAT               4
 #define DI_DEFAULTSIZE          8
 
-  /* misc messages */
-#define WM_CPL_LAUNCH       (WM_USER + 1000)
-#define WM_CPL_LAUNCHED     (WM_USER + 1001)
-
 /* WM_NOTIFYFORMAT commands and return values */
 #define NFR_ANSI           1
 #define NFR_UNICODE        2
 #define NF_QUERY           3
 #define NF_REQUERY         4
 
-#include "poppack.h"
+/* RegisterDeviceNotification stuff */
+typedef  PVOID           HDEVNOTIFY;
+typedef  HDEVNOTIFY     *PHDEVNOTIFY;
+
+#define DEVICE_NOTIFY_WINDOW_HANDLE     0x00000000
+
+/* used for GetWindowInfo() */
+
+#define WS_ACTIVECAPTION    0x0001
+
+typedef struct tagWINDOWINFO {
+    DWORD cbSize;
+    RECT  rcWindow;
+    RECT  rcClient;
+    DWORD dwStyle;
+    DWORD dwExStyle;
+    DWORD dwWindowStatus;
+    UINT  cxWindowBorders;
+    UINT  cyWindowBorders;
+    ATOM  atomWindowType;
+    WORD  wCreatorVersion;
+} WINDOWINFO, *PWINDOWINFO, *LPWINDOWINFO;
+
+/* SetWinEventHook() flags */
+#define WINEVENT_OUTOFCONTEXT   0x0
+#define WINEVENT_SKIPOWNTHREAD  0x1
+#define WINEVENT_SKIPOWNPROCESS 0x2
+#define WINEVENT_INCONTEXT      0x4
+
+/* Object Id's */
+#define CHILDID_SELF      0
+#define INDEXID_OBJECT    0
+#define INDEXID_CONTAINER 0
+
+/* System object Id's */
+#define OBJID_WINDOW            0
+#define OBJID_SYSMENU           -1
+#define OBJID_TITLEBAR          -2
+#define OBJID_MENU              -3
+#define OBJID_CLIENT            -4
+#define OBJID_VSCROLL           -5
+#define OBJID_HSCROLL           -6
+#define OBJID_SIZEGRIP          -7
+#define OBJID_CARET             -8
+#define OBJID_CURSOR            -9
+#define OBJID_ALERT             -10
+#define OBJID_SOUND             -11
+#define OBJID_QUERYCLASSNAMEIDX -12
+#define OBJID_NATIVEOM          -16
+
+/* User event Id limits */
+#define EVENT_MIN 0x00000001
+#define EVENT_MAX 0x7FFFFFFF
+
+/* System events */
+#define EVENT_SYSTEM_SOUND            0x01
+#define EVENT_SYSTEM_ALERT            0x02
+#define EVENT_SYSTEM_FOREGROUND       0x03
+#define EVENT_SYSTEM_MENUSTART        0x04
+#define EVENT_SYSTEM_MENUEND          0x05
+#define EVENT_SYSTEM_MENUPOPUPSTART   0x06
+#define EVENT_SYSTEM_MENUPOPUPEND     0x07
+#define EVENT_SYSTEM_CAPTURESTART     0x08
+#define EVENT_SYSTEM_CAPTUREEND       0x09
+#define EVENT_SYSTEM_MOVESIZESTART    0x0A
+#define EVENT_SYSTEM_MOVESIZEEND      0x0B
+#define EVENT_SYSTEM_CONTEXTHELPSTART 0x0C
+#define EVENT_SYSTEM_CONTEXTHELPEND   0x0D
+#define EVENT_SYSTEM_DRAGDROPSTART    0x0E
+#define EVENT_SYSTEM_DRAGDROPEND      0x0F
+#define EVENT_SYSTEM_DIALOGSTART      0x10
+#define EVENT_SYSTEM_DIALOGEND        0x11
+#define EVENT_SYSTEM_SCROLLINGSTART   0x12
+#define EVENT_SYSTEM_SCROLLINGEND     0x13
+#define EVENT_SYSTEM_SWITCHSTART      0x14
+#define EVENT_SYSTEM_SWITCHEND        0x15
+#define EVENT_SYSTEM_MINIMIZESTART    0x16
+#define EVENT_SYSTEM_MINIMIZEEND      0x17
+
+/* Console events */
+#define EVENT_CONSOLE_CARET             0x4001
+#define EVENT_CONSOLE_UPDATE_REGION     0x4002
+#define EVENT_CONSOLE_UPDATE_SIMPLE     0x4003
+#define EVENT_CONSOLE_UPDATE_SCROLL     0x4004
+#define EVENT_CONSOLE_LAYOUT            0x4005
+#define EVENT_CONSOLE_START_APPLICATION 0x4006
+#define EVENT_CONSOLE_END_APPLICATION   0x4007
+
+#define CONSOLE_APPLICATION_16BIT 0x1
+#define CONSOLE_CARET_SELECTION   0x1
+#define CONSOLE_CARET_VISIBLE     0x2
+
+/* Object events */
+#define EVENT_OBJECT_CREATE            0x8000
+#define EVENT_OBJECT_DESTROY           0x8001
+#define EVENT_OBJECT_SHOW              0x8002
+#define EVENT_OBJECT_HIDE              0x8003
+#define EVENT_OBJECT_REORDER           0x8004
+#define EVENT_OBJECT_FOCUS             0x8005
+#define EVENT_OBJECT_SELECTION         0x8006
+#define EVENT_OBJECT_SELECTIONADD      0x8007
+#define EVENT_OBJECT_SELECTIONREMOVE   0x8008
+#define EVENT_OBJECT_SELECTIONWITHIN   0x8009
+#define EVENT_OBJECT_STATECHANGE       0x800A
+#define EVENT_OBJECT_LOCATIONCHANGE    0x800B
+#define EVENT_OBJECT_NAMECHANGE        0x800C
+#define EVENT_OBJECT_DESCRIPTIONCHANGE 0x800D
+#define EVENT_OBJECT_VALUECHANGE       0x800E
+#define EVENT_OBJECT_PARENTCHANGE      0x800F
+#define EVENT_OBJECT_HELPCHANGE        0x8010
+#define EVENT_OBJECT_DEFACTIONCHANGE   0x8011
+#define EVENT_OBJECT_ACCELERATORCHANGE 0x8012
+
+/* Sound events */
+#define SOUND_SYSTEM_STARTUP      1
+#define SOUND_SYSTEM_SHUTDOWN     2
+#define SOUND_SYSTEM_BEEP         3
+#define SOUND_SYSTEM_ERROR        4
+#define SOUND_SYSTEM_QUESTION     5
+#define SOUND_SYSTEM_WARNING      6
+#define SOUND_SYSTEM_INFORMATION  7
+#define SOUND_SYSTEM_MAXIMIZE     8
+#define SOUND_SYSTEM_MINIMIZE     9
+#define SOUND_SYSTEM_RESTOREUP   10
+#define SOUND_SYSTEM_RESTOREDOWN 11
+#define SOUND_SYSTEM_APPSTART    12
+#define SOUND_SYSTEM_FAULT       13
+#define SOUND_SYSTEM_APPEND      14
+#define SOUND_SYSTEM_MENUCOMMAND 15
+#define SOUND_SYSTEM_MENUPOPUP   16
+#define CSOUND_SYSTEM            16
+
+/* Alert events */
+#define ALERT_SYSTEM_INFORMATIONAL 1
+#define ALERT_SYSTEM_WARNING       2
+#define ALERT_SYSTEM_ERROR         3
+#define ALERT_SYSTEM_QUERY         4
+#define ALERT_SYSTEM_CRITICAL      5
+#define CALERT_SYSTEM              6
+
+
 #define     EnumTaskWindows(handle,proc,lparam) \
             EnumThreadWindows(handle,proc,lparam)
 #define     OemToAnsiA OemToCharA
@@ -2949,6 +3656,21 @@ typedef struct
 #define     AnsiToOemBuffW CharToOemBuffW
 #define     AnsiToOemBuff WINELIB_NAME_AW(AnsiToOemBuff)
 
+#if defined(_WINGDI_) && !defined(NOGDI)
+LONG        WINAPI ChangeDisplaySettingsA(LPDEVMODEA,DWORD);
+LONG        WINAPI ChangeDisplaySettingsW(LPDEVMODEW,DWORD);
+#define     ChangeDisplaySettings WINELIB_NAME_AW(ChangeDisplaySettings)
+LONG        WINAPI ChangeDisplaySettingsExA(LPCSTR,LPDEVMODEA,HWND,DWORD,LPARAM);
+LONG        WINAPI ChangeDisplaySettingsExW(LPCWSTR,LPDEVMODEW,HWND,DWORD,LPARAM);
+#define     ChangeDisplaySettingsEx WINELIB_NAME_AW(ChangeDisplaySettingsEx)
+BOOL        WINAPI EnumDisplayDevicesA(LPVOID,DWORD,LPDISPLAY_DEVICEA,DWORD);
+BOOL        WINAPI EnumDisplayDevicesW(LPVOID,DWORD,LPDISPLAY_DEVICEW,DWORD);
+#define     EnumDisplayDevices WINELIB_NAME_AW(EnumDisplayDevices)
+BOOL        WINAPI EnumDisplaySettingsA(LPCSTR,DWORD,LPDEVMODEA);
+BOOL        WINAPI EnumDisplaySettingsW(LPCWSTR,DWORD,LPDEVMODEW);
+#define     EnumDisplaySettings WINELIB_NAME_AW(EnumDisplaySettings)
+#endif /* defined(_WINGDI_) && !defined(NOGDI) */
+
 HKL         WINAPI ActivateKeyboardLayout(HKL,UINT);
 LONG        WINAPI BroadcastSystemMessage(DWORD,LPDWORD,UINT,WPARAM,LPARAM);
 WORD        WINAPI CascadeWindows(HWND, UINT, const LPRECT, UINT, const HWND *);
@@ -2958,18 +3680,18 @@ INT       WINAPI CopyAcceleratorTableW(HACCEL,LPACCEL,INT);
 HACCEL      WINAPI CreateAcceleratorTableA(LPACCEL,INT);
 HACCEL      WINAPI CreateAcceleratorTableW(LPACCEL,INT);
 #define     CreateAcceleratorTable WINELIB_NAME_AW(CreateAcceleratorTable)
-HICON     WINAPI CreateIconIndirect(LPICONINFO);
+HICON     WINAPI CreateIconIndirect(PICONINFO);
 BOOL      WINAPI DestroyAcceleratorTable(HACCEL);
+BOOL        WINAPI EnumDesktopsA(HWINSTA,DESKTOPENUMPROCA,LPARAM);
+BOOL        WINAPI EnumDesktopsW(HWINSTA,DESKTOPENUMPROCW,LPARAM);
+#define     EnumDesktops WINELIB_NAME_AW(EnumDesktops)
 BOOL      WINAPI EnumDisplayMonitors(HDC,LPRECT,MONITORENUMPROC,LPARAM);
-BOOL        WINAPI EnumDisplayDevicesA(LPVOID,DWORD,LPDISPLAY_DEVICEA,DWORD);
-BOOL        WINAPI EnumDisplayDevicesW(LPVOID,DWORD,LPDISPLAY_DEVICEW,DWORD);
-#define     EnumDisplayDevices WINELIB_NAME_AW(EnumDisplayDevices)
 INT       WINAPI EnumPropsExA(HWND,PROPENUMPROCEXA,LPARAM);
 INT       WINAPI EnumPropsExW(HWND,PROPENUMPROCEXW,LPARAM);
 #define     EnumPropsEx WINELIB_NAME_AW(EnumPropsEx)
 BOOL      WINAPI EnumThreadWindows(DWORD,WNDENUMPROC,LPARAM);
 BOOL      WINAPI ExitWindowsEx(UINT,DWORD);
-BOOL      WINAPI GetIconInfo(HICON,LPICONINFO);
+BOOL      WINAPI GetIconInfo(HICON,PICONINFO);
 HKL       WINAPI GetKeyboardLayout(DWORD);
 INT       WINAPI GetKeyboardLayoutList(INT,HKL *);
 DWORD     WINAPI GetMenuContextHelpId(HMENU);
@@ -2981,33 +3703,35 @@ BOOL      WINAPI GetMenuItemInfoW(HMENU,UINT,BOOL,MENUITEMINFOW*);
 BOOL      WINAPI GetMonitorInfoA(HMONITOR,LPMONITORINFO);
 BOOL      WINAPI GetMonitorInfoW(HMONITOR,LPMONITORINFO);
 #define     GetMonitorInfo WINELIB_NAME_AW(GetMonitorInfo)
-INT       WINAPI GetNumberFormatA(LCID,DWORD,LPCSTR,const NUMBERFMTA*,LPSTR,int);
-INT       WINAPI GetNumberFormatW(LCID,DWORD,LPCWSTR,const NUMBERFMTW*,LPWSTR,int);
-#define     GetNumberFormat WINELIB_NAME_AW(GetNumberFormat);
 DWORD       WINAPI GetWindowContextHelpId(HWND);
 DWORD       WINAPI GetWindowThreadProcessId(HWND,LPDWORD);
-BOOL      WINAPI IsWindowUnicode(HWND);
-HKL       WINAPI LoadKeyboardLayoutA(LPCSTR,UINT);
-HKL       WINAPI LoadKeyboardLayoutW(LPCWSTR,UINT);
+BOOL        WINAPI IsWinEventHookInstalled(DWORD);
+BOOL        WINAPI IsWindowUnicode(HWND);
+HKL         WINAPI LoadKeyboardLayoutA(LPCSTR,UINT);
+HKL         WINAPI LoadKeyboardLayoutW(LPCWSTR,UINT);
 #define     LoadKeyboardLayout WINELIB_NAME_AW(LoadKeyboardLayout)
-INT       WINAPI MessageBoxExA(HWND,LPCSTR,LPCSTR,UINT,WORD);
-INT       WINAPI MessageBoxExW(HWND,LPCWSTR,LPCWSTR,UINT,WORD);
+INT         WINAPI MessageBoxExA(HWND,LPCSTR,LPCSTR,UINT,WORD);
+INT         WINAPI MessageBoxExW(HWND,LPCWSTR,LPCWSTR,UINT,WORD);
 #define     MessageBoxEx WINELIB_NAME_AW(MessageBoxEx)
 HMONITOR    WINAPI MonitorFromPoint(POINT,DWORD);
 HMONITOR    WINAPI MonitorFromRect(LPRECT,DWORD);
 HMONITOR    WINAPI MonitorFromWindow(HWND,DWORD);
-DWORD       WINAPI MsgWaitForMultipleObjects(DWORD,HANDLE*,BOOL,DWORD,DWORD);
-BOOL      WINAPI PaintDesktop(HDC);
-BOOL      WINAPI PostThreadMessageA(DWORD, UINT, WPARAM, LPARAM);
-BOOL      WINAPI PostThreadMessageW(DWORD, UINT, WPARAM, LPARAM);
+DWORD       WINAPI MsgWaitForMultipleObjects(DWORD,CONST HANDLE*,BOOL,DWORD,DWORD);
+DWORD       WINAPI MsgWaitForMultipleObjectsEx(DWORD,CONST HANDLE*,DWORD,DWORD,DWORD);
+VOID        WINAPI NotifyWinEvent(DWORD,HWND,LONG,LONG);
+BOOL        WINAPI PaintDesktop(HDC);
+BOOL        WINAPI PostThreadMessageA(DWORD,UINT,WPARAM,LPARAM);
+BOOL        WINAPI PostThreadMessageW(DWORD,UINT,WPARAM,LPARAM);
 #define     PostThreadMessage WINELIB_NAME_AW(PostThreadMessage)
 BOOL        WINAPI RegisterHotKey(HWND,INT,UINT,UINT);
-UINT      WINAPI ReuseDDElParam(UINT,UINT,UINT,UINT,UINT);
-BOOL        WINAPI SendMessageCallbackA(HWND,UINT,WPARAM,LPARAM,FARPROC,DWORD);
-BOOL        WINAPI SendMessageCallbackW(HWND,UINT,WPARAM,LPARAM,FARPROC,DWORD);
+HDEVNOTIFY  WINAPI RegisterDeviceNotificationA(HANDLE,LPVOID,DWORD);
+HDEVNOTIFY  WINAPI RegisterDeviceNotificationW(HANDLE,LPVOID,DWORD);
+#define     RegisterDeviceNotification WINELIB_NAME_AW(RegisterDeviceNotification)
+BOOL        WINAPI SendMessageCallbackA(HWND,UINT,WPARAM,LPARAM,SENDASYNCPROC,ULONG_PTR);
+BOOL        WINAPI SendMessageCallbackW(HWND,UINT,WPARAM,LPARAM,SENDASYNCPROC,ULONG_PTR);
 #define      SendMessageCallback WINELIB_NAME_AW(SendMessageCallback)
-BOOL      WINAPI SendNotifyMessageA(HWND,UINT,WPARAM,LPARAM);
-BOOL      WINAPI SendNotifyMessageW(HWND,UINT,WPARAM,LPARAM);
+BOOL        WINAPI SendNotifyMessageA(HWND,UINT,WPARAM,LPARAM);
+BOOL        WINAPI SendNotifyMessageW(HWND,UINT,WPARAM,LPARAM);
 #define     SendNotifyMessage WINELIB_NAME_AW(SendNotifyMessage)
 VOID        WINAPI SetDebugErrorLevel(DWORD);
 VOID        WINAPI SetLastErrorEx(DWORD,DWORD);
@@ -3017,12 +3741,14 @@ BOOL      WINAPI SetMenuItemInfoA(HMENU,UINT,BOOL,const MENUITEMINFOA*);
 BOOL      WINAPI SetMenuItemInfoW(HMENU,UINT,BOOL,const MENUITEMINFOW*);
 #define     SetMenuItemInfo WINELIB_NAME_AW(SetMenuItemInfo)
 BOOL      WINAPI SetWindowContextHelpId(HWND,DWORD);
+HWINEVENTHOOK WINAPI SetWinEventHook(DWORD,DWORD,HMODULE,WINEVENTPROC,DWORD,DWORD,DWORD);
 WORD        WINAPI TileWindows (HWND, UINT, const LPRECT,
                                 UINT, const HWND *);
 INT         WINAPI ToUnicode(UINT,UINT,PBYTE,LPWSTR,int,UINT);
 BOOL      WINAPI TrackPopupMenuEx(HMENU,UINT,INT,INT,HWND,
                                     LPTPMPARAMS);
-UINT      WINAPI UnpackDDElParam(UINT,UINT,UINT*,UINT*);
+BOOL        WINAPI UnhookWinEvent(HWINEVENTHOOK);
+BOOL        WINAPI UnregisterDeviceNotification(HDEVNOTIFY);
 BOOL        WINAPI UnregisterHotKey(HWND,INT);
 DWORD       WINAPI WaitForInputIdle(HANDLE,DWORD);
 VOID        WINAPI keybd_event(BYTE,BYTE,DWORD,DWORD);
@@ -3036,18 +3762,15 @@ DWORD       WINAPI GetMenuCheckMarkDimensions(void);
 LONG        WINAPI GetMessageExtraInfo(void);
 DWORD       WINAPI GetMessagePos(void);
 LONG        WINAPI GetMessageTime(void);
-DWORD       WINAPI GetTickCount(void);
-ATOM        WINAPI GlobalDeleteAtom(ATOM);
 DWORD       WINAPI OemKeyScan(WORD);
 BOOL        WINAPI ReleaseCapture(void);
 BOOL        WINAPI SetKeyboardState(LPBYTE);
-VOID        WINAPI WaitMessage(void);
-
 
 /* Declarations for functions that change between Win16 and Win32 */
 
-BOOL      WINAPI AdjustWindowRect(LPRECT,DWORD,BOOL);
-BOOL      WINAPI AdjustWindowRectEx(LPRECT,DWORD,BOOL,DWORD);
+BOOL        WINAPI AdjustWindowRect(LPRECT,DWORD,BOOL);
+BOOL        WINAPI AdjustWindowRectEx(LPRECT,DWORD,BOOL,DWORD);
+BOOL        WINAPI AnimateWindow(HWND,DWORD,DWORD);
 #define     AnsiLowerA CharLowerA
 #define     AnsiLowerW CharLowerW
 #define     AnsiLower WINELIB_NAME_AW(AnsiLower)
@@ -3074,6 +3797,7 @@ UINT      WINAPI ArrangeIconicWindows(HWND);
 HDWP      WINAPI BeginDeferWindowPos(INT);
 HDC       WINAPI BeginPaint(HWND,LPPAINTSTRUCT);
 BOOL      WINAPI BringWindowToTop(HWND);
+void      WINAPI CalcChildScroll(HWND, INT);
 BOOL      WINAPI CallMsgFilterA(LPMSG,INT);
 BOOL      WINAPI CallMsgFilterW(LPMSG,INT);
 #define     CallMsgFilter WINELIB_NAME_AW(CallMsgFilter)
@@ -3082,12 +3806,6 @@ LRESULT     WINAPI CallWindowProcA(WNDPROC,HWND,UINT,WPARAM,LPARAM);
 LRESULT     WINAPI CallWindowProcW(WNDPROC,HWND,UINT,WPARAM,LPARAM);
 #define     CallWindowProc WINELIB_NAME_AW(CallWindowProc)
 BOOL      WINAPI ChangeClipboardChain(HWND,HWND);
-LONG        WINAPI ChangeDisplaySettingsA(LPDEVMODEA,DWORD);
-LONG        WINAPI ChangeDisplaySettingsW(LPDEVMODEW,DWORD);
-#define     ChangeDisplaySettings WINELIB_NAME_AW(ChangeDisplaySettings)
-LONG        WINAPI ChangeDisplaySettingsExA(LPCSTR,LPDEVMODEA,HWND,DWORD,LPARAM);
-LONG        WINAPI ChangeDisplaySettingsExW(LPCWSTR,LPDEVMODEW,HWND,DWORD,LPARAM);
-#define     ChangeDisplaySettingsEx WINELIB_NAME_AW(ChangeDisplaySettingsEx)
 BOOL      WINAPI ChangeMenuA(HMENU,UINT,LPCSTR,UINT,UINT);
 BOOL      WINAPI ChangeMenuW(HMENU,UINT,LPCWSTR,UINT,UINT);
 #define     ChangeMenu WINELIB_NAME_AW(ChangeMenu)
@@ -3101,14 +3819,12 @@ LPSTR       WINAPI CharNextA(LPCSTR);
 LPWSTR      WINAPI CharNextW(LPCWSTR);
 #define     CharNext WINELIB_NAME_AW(CharNext)
 LPSTR       WINAPI CharNextExA(WORD,LPCSTR,DWORD);
-LPWSTR      WINAPI CharNextExW(WORD,LPCWSTR,DWORD);
-#define     CharNextEx WINELIB_NAME_AW(CharNextEx)
+/* no CharNextExW (doesn't make sense) */
 LPSTR       WINAPI CharPrevA(LPCSTR,LPCSTR);
 LPWSTR      WINAPI CharPrevW(LPCWSTR,LPCWSTR);
 #define     CharPrev WINELIB_NAME_AW(CharPrev)
 LPSTR       WINAPI CharPrevExA(WORD,LPCSTR,LPCSTR,DWORD);
-LPWSTR      WINAPI CharPrevExW(WORD,LPCWSTR,LPCWSTR,DWORD);
-#define     CharPrevEx WINELIB_NAME_AW(CharPrevEx)
+/* no CharPrevExW (doesn't make sense) */
 LPSTR       WINAPI CharUpperA(LPSTR);
 LPWSTR      WINAPI CharUpperW(LPWSTR);
 #define     CharUpper WINELIB_NAME_AW(CharUpper)
@@ -3127,11 +3843,12 @@ BOOL      WINAPI CheckMenuRadioItem(HMENU,UINT,UINT,UINT,UINT);
 BOOL      WINAPI CheckRadioButton(HWND,UINT,UINT,UINT);
 HWND      WINAPI ChildWindowFromPoint(HWND,POINT);
 HWND      WINAPI ChildWindowFromPointEx(HWND,POINT,UINT);
-BOOL      WINAPI ClearCommBreak(HANDLE);
 BOOL      WINAPI ClientToScreen(HWND,LPPOINT);
 BOOL      WINAPI ClipCursor(const RECT*);
 BOOL      WINAPI CloseClipboard(void);
+BOOL      WINAPI CloseDesktop(HDESK);
 BOOL      WINAPI CloseWindow(HWND);
+BOOL      WINAPI CloseWindowStation(HWINSTA);
 #define     CopyCursor(cur) ((HCURSOR)CopyIcon((HICON)(cur)))
 HICON     WINAPI CopyIcon(HICON);
 HICON     WINAPI CopyImage(HANDLE,UINT,INT,INT,UINT);
@@ -3176,6 +3893,9 @@ HWND      WINAPI CreateWindowExA(DWORD,LPCSTR,LPCSTR,DWORD,INT,INT,
 HWND      WINAPI CreateWindowExW(DWORD,LPCWSTR,LPCWSTR,DWORD,INT,INT,
                                 INT,INT,HWND,HMENU,HINSTANCE,LPVOID);
 #define     CreateWindowEx WINELIB_NAME_AW(CreateWindowEx)
+HWINSTA     WINAPI CreateWindowStationA(LPSTR,DWORD,DWORD,LPSECURITY_ATTRIBUTES);
+HWINSTA     WINAPI CreateWindowStationW(LPWSTR,DWORD,DWORD,LPSECURITY_ATTRIBUTES);
+#define     CreateWindowStation WINELIB_NAME_AW(CreateWindowStation)
 HWND      WINAPI CreateMDIWindowA(LPCSTR,LPCSTR,DWORD,INT,INT,
                                 INT,INT,HWND,HINSTANCE,LPARAM);
 HWND      WINAPI CreateMDIWindowW(LPCWSTR,LPCWSTR,DWORD,INT,INT,
@@ -3240,34 +3960,38 @@ BOOL      WINAPI DrawCaption(HWND,HDC,const RECT*,UINT);
 BOOL      WINAPI DrawCaptionTempA(HWND,HDC,const RECT*,HFONT,HICON,LPCSTR,UINT);
 BOOL      WINAPI DrawCaptionTempW(HWND,HDC,const RECT*,HFONT,HICON,LPCWSTR,UINT);
 #define     DrawCaptionTemp WINELIB_NAME_AW(DrawCaptionTemp)
-BOOL      WINAPI DrawEdge(HDC,LPRECT,UINT,UINT);
-BOOL      WINAPI DrawFocusRect(HDC,const RECT*);
-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);
-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);
+BOOL        WINAPI DrawEdge(HDC,LPRECT,UINT,UINT);
+BOOL        WINAPI DrawFocusRect(HDC,const RECT*);
+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);
+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);
 #define     DrawState WINELIB_NAME_AW(DrawState)
-INT       WINAPI DrawTextA(HDC,LPCSTR,INT,LPRECT,UINT);
-INT       WINAPI DrawTextW(HDC,LPCWSTR,INT,LPRECT,UINT);
+INT         WINAPI DrawTextA(HDC,LPCSTR,INT,LPRECT,UINT);
+INT         WINAPI DrawTextW(HDC,LPCWSTR,INT,LPRECT,UINT);
 #define     DrawText WINELIB_NAME_AW(DrawText)
-BOOL      WINAPI EmptyClipboard(void);
-UINT      WINAPI EnableMenuItem(HMENU,UINT,UINT);
-BOOL      WINAPI EnableScrollBar(HWND,INT,UINT);
-BOOL      WINAPI EnableWindow(HWND,BOOL);
-BOOL      WINAPI EndDeferWindowPos(HDWP);
-BOOL      WINAPI EndDialog(HWND,INT);
-BOOL      WINAPI EndPaint(HWND,const PAINTSTRUCT*);
-BOOL      WINAPI EnumChildWindows(HWND,WNDENUMPROC,LPARAM);
-UINT      WINAPI EnumClipboardFormats(UINT);
-INT       WINAPI EnumPropsA(HWND,PROPENUMPROCA);
-INT       WINAPI EnumPropsW(HWND,PROPENUMPROCW);
+INT         WINAPI DrawTextExA(HDC,LPSTR,INT,LPRECT,UINT,LPDRAWTEXTPARAMS);
+INT         WINAPI DrawTextExW(HDC,LPWSTR,INT,LPRECT,UINT,LPDRAWTEXTPARAMS);
+#define     DrawTextEx WINELIB_NAME_AW(DrawTextEx)
+BOOL        WINAPI EmptyClipboard(void);
+UINT        WINAPI EnableMenuItem(HMENU,UINT,UINT);
+BOOL        WINAPI EnableScrollBar(HWND,INT,UINT);
+BOOL        WINAPI EnableWindow(HWND,BOOL);
+BOOL        WINAPI EndDeferWindowPos(HDWP);
+BOOL        WINAPI EndDialog(HWND,INT);
+BOOL        WINAPI EndPaint(HWND,const PAINTSTRUCT*);
+BOOL        WINAPI EnumChildWindows(HWND,WNDENUMPROC,LPARAM);
+UINT        WINAPI EnumClipboardFormats(UINT);
+INT         WINAPI EnumPropsA(HWND,PROPENUMPROCA);
+INT         WINAPI EnumPropsW(HWND,PROPENUMPROCW);
 #define     EnumProps WINELIB_NAME_AW(EnumProps)
 BOOL      WINAPI EnumWindows(WNDENUMPROC,LPARAM);
+BOOL        WINAPI EnumWindowStationsA(WINSTAENUMPROCA,LPARAM);
+BOOL        WINAPI EnumWindowStationsW(WINSTAENUMPROCW,LPARAM);
+#define     EnumWindowStations WINELIB_NAME_AW(EnumWindowStations)
 BOOL      WINAPI EqualRect(const RECT*,const RECT*);
-BOOL      WINAPI EscapeCommFunction(HANDLE,UINT);
 INT       WINAPI ExcludeUpdateRgn(HDC,HWND);
 #define     ExitWindows(a,b) ExitWindowsEx(EWX_LOGOFF,0xffffffff)
 INT       WINAPI FillRect(HDC,const RECT*,HBRUSH);
@@ -3277,16 +4001,17 @@ HWND      WINAPI FindWindowW(LPCWSTR,LPCWSTR);
 HWND      WINAPI FindWindowExA(HWND,HWND,LPCSTR,LPCSTR);
 HWND      WINAPI FindWindowExW(HWND,HWND,LPCWSTR,LPCWSTR);
 #define     FindWindowEx WINELIB_NAME_AW(FindWindowEx)
-BOOL      WINAPI FlashWindow(HWND,BOOL);
-INT       WINAPI FrameRect(HDC,const RECT*,HBRUSH);
-HWND      WINAPI GetActiveWindow(void);
+BOOL        WINAPI FlashWindow(HWND,BOOL);
+INT         WINAPI FrameRect(HDC,const RECT*,HBRUSH);
+HWND        WINAPI GetActiveWindow(void);
+HWND        WINAPI GetAncestor(HWND,UINT);
 DWORD       WINAPI GetAppCompatFlags(HTASK);
-WORD        WINAPI GetAsyncKeyState(INT);
-HWND      WINAPI GetCapture(void);
-UINT      WINAPI GetCaretBlinkTime(void);
-BOOL      WINAPI GetCaretPos(LPPOINT);
-BOOL      WINAPI GetClassInfoA(HINSTANCE,LPCSTR,WNDCLASSA *);
-BOOL      WINAPI GetClassInfoW(HINSTANCE,LPCWSTR,WNDCLASSW *);
+SHORT       WINAPI GetAsyncKeyState(INT);
+HWND        WINAPI GetCapture(void);
+UINT        WINAPI GetCaretBlinkTime(void);
+BOOL        WINAPI GetCaretPos(LPPOINT);
+BOOL        WINAPI GetClassInfoA(HINSTANCE,LPCSTR,WNDCLASSA *);
+BOOL        WINAPI GetClassInfoW(HINSTANCE,LPCWSTR,WNDCLASSW *);
 #define     GetClassInfo WINELIB_NAME_AW(GetClassInfo)
 BOOL      WINAPI GetClassInfoExA(HINSTANCE,LPCSTR,WNDCLASSEXA *);
 BOOL      WINAPI GetClassInfoExW(HINSTANCE,LPCWSTR,WNDCLASSEXW *);
@@ -3306,7 +4031,6 @@ INT       WINAPI GetClipboardFormatNameW(UINT,LPWSTR,INT);
 HWND      WINAPI GetClipboardOwner(void);
 HWND      WINAPI GetClipboardViewer(void);
 BOOL      WINAPI GetClipCursor(LPRECT);
-#define     GetCurrentTime() GetTickCount()
 HCURSOR   WINAPI GetCursor(void);
 BOOL      WINAPI GetCursorPos(LPPOINT);
 HDC       WINAPI GetDC(HWND);
@@ -3331,7 +4055,7 @@ INT       WINAPI GetKeyNameTextW(LONG,LPWSTR,INT);
 INT       WINAPI GetKeyboardLayoutNameA(LPSTR);
 INT       WINAPI GetKeyboardLayoutNameW(LPWSTR);
 #define     GetKeyboardLayoutName WINELIB_NAME_AW(GetKeyboardLayoutName)
-INT16       WINAPI GetKeyState(INT);
+SHORT       WINAPI GetKeyState(INT);
 HWND      WINAPI GetLastActivePopup(HWND);
 HMENU     WINAPI GetMenu(HWND);
 INT       WINAPI GetMenuItemCount(HMENU);
@@ -3360,7 +4084,6 @@ INT       WINAPI GetScrollPos(HWND,INT);
 BOOL      WINAPI GetScrollRange(HWND,INT,LPINT,LPINT);
 HWND      WINAPI GetShellWindow(void);
 HMENU     WINAPI GetSubMenu(HMENU,INT);
-COLORREF    WINAPI GetSysColor(INT);
 HBRUSH    WINAPI GetSysColorBrush(INT);
 #define     GetSysModalWindow() ((HWND)0)
 HMENU     WINAPI GetSystemMenu(HWND,BOOL);
@@ -3371,52 +4094,48 @@ DWORD       WINAPI GetTabbedTextExtentW(HDC,LPCWSTR,INT,INT,const INT*);
 HWND      WINAPI GetTopWindow(HWND);
 BOOL      WINAPI GetUpdateRect(HWND,LPRECT,BOOL);
 INT       WINAPI GetUpdateRgn(HWND,HRGN,BOOL);
-HWND      WINAPI GetWindow(HWND,WORD);
-HDC       WINAPI GetWindowDC(HWND);
+BOOL        WINAPI GetUserObjectInformationA(HANDLE,INT,LPVOID,DWORD,LPDWORD);
+BOOL        WINAPI GetUserObjectInformationW(HANDLE,INT,LPVOID,DWORD,LPDWORD);
+#define     GetUserObjectInformation WINELIB_NAME_AW(GetUserObjectInformation)
+HWND        WINAPI GetWindow(HWND,UINT);
+HDC         WINAPI GetWindowDC(HWND);
+BOOL        WINAPI GetWindowInfo(HWND, PWINDOWINFO);
 LONG        WINAPI GetWindowLongA(HWND,INT);
 LONG        WINAPI GetWindowLongW(HWND,INT);
 #define     GetWindowLong WINELIB_NAME_AW(GetWindowLong)
-BOOL      WINAPI GetWindowPlacement(HWND,LPWINDOWPLACEMENT);
-BOOL      WINAPI GetWindowRect(HWND,LPRECT);
-INT       WINAPI GetWindowRgn(HWND,HRGN);
+BOOL        WINAPI GetWindowPlacement(HWND,LPWINDOWPLACEMENT);
+BOOL        WINAPI GetWindowRect(HWND,LPRECT);
+INT         WINAPI GetWindowRgn(HWND,HRGN);
+HWINSTA     WINAPI GetProcessWindowStation(void);
 #define     GetWindowTask(hwnd) ((HTASK)GetWindowThreadProcessId(hwnd,NULL))
-INT       WINAPI GetWindowTextA(HWND,LPSTR,INT);
-INT       WINAPI GetWindowTextW(HWND,LPWSTR,INT);
+INT         WINAPI GetWindowTextA(HWND,LPSTR,INT);
+INT         WINAPI GetWindowTextW(HWND,LPWSTR,INT);
 #define     GetWindowText WINELIB_NAME_AW(GetWindowText)
-INT       WINAPI GetWindowTextLengthA(HWND);
-INT       WINAPI GetWindowTextLengthW(HWND);
+INT         WINAPI GetWindowTextLengthA(HWND);
+INT         WINAPI GetWindowTextLengthW(HWND);
 #define     GetWindowTextLength WINELIB_NAME_AW(GetWindowTextLength)
 WORD        WINAPI GetWindowWord(HWND,INT);
-ATOM        WINAPI GlobalAddAtomA(LPCSTR);
-ATOM        WINAPI GlobalAddAtomW(LPCWSTR);
-#define     GlobalAddAtom WINELIB_NAME_AW(GlobalAddAtom)
-ATOM        WINAPI GlobalFindAtomA(LPCSTR);
-ATOM        WINAPI GlobalFindAtomW(LPCWSTR);
-#define     GlobalFindAtom WINELIB_NAME_AW(GlobalFindAtom)
-UINT      WINAPI GlobalGetAtomNameA(ATOM,LPSTR,INT);
-UINT      WINAPI GlobalGetAtomNameW(ATOM,LPWSTR,INT);
-#define     GlobalGetAtomName WINELIB_NAME_AW(GlobalGetAtomName)
-BOOL      WINAPI GrayStringA(HDC,HBRUSH,GRAYSTRINGPROC,LPARAM,
-                                 INT,INT,INT,INT,INT);
-BOOL      WINAPI GrayStringW(HDC,HBRUSH,GRAYSTRINGPROC,LPARAM,
-                                 INT,INT,INT,INT,INT);
+BOOL        WINAPI GrayStringA(HDC,HBRUSH,GRAYSTRINGPROC,LPARAM,INT,INT,INT,INT,INT);
+BOOL        WINAPI GrayStringW(HDC,HBRUSH,GRAYSTRINGPROC,LPARAM,INT,INT,INT,INT,INT);
 #define     GrayString WINELIB_NAME_AW(GrayString)
-BOOL      WINAPI HideCaret(HWND);
-BOOL      WINAPI HiliteMenuItem(HWND,HMENU,UINT,UINT);
-BOOL      WINAPI InflateRect(LPRECT,INT,INT);
-BOOL      WINAPI InSendMessage(void);
-BOOL      WINAPI InsertMenuA(HMENU,UINT,UINT,UINT,LPCSTR);
-BOOL      WINAPI InsertMenuW(HMENU,UINT,UINT,UINT,LPCWSTR);
+BOOL        WINAPI HideCaret(HWND);
+BOOL        WINAPI HiliteMenuItem(HWND,HMENU,UINT,UINT);
+BOOL        WINAPI InflateRect(LPRECT,INT,INT);
+BOOL        WINAPI InSendMessage(void);
+DWORD       WINAPI InSendMessageEx(LPVOID);
+BOOL        WINAPI InsertMenuA(HMENU,UINT,UINT,UINT,LPCSTR);
+BOOL        WINAPI InsertMenuW(HMENU,UINT,UINT,UINT,LPCWSTR);
 #define     InsertMenu WINELIB_NAME_AW(InsertMenu)
-BOOL      WINAPI InsertMenuItemA(HMENU,UINT,BOOL,const MENUITEMINFOA*);
-BOOL      WINAPI InsertMenuItemW(HMENU,UINT,BOOL,const MENUITEMINFOW*);
+BOOL        WINAPI InsertMenuItemA(HMENU,UINT,BOOL,const MENUITEMINFOA*);
+BOOL        WINAPI InsertMenuItemW(HMENU,UINT,BOOL,const MENUITEMINFOW*);
 #define     InsertMenuItem WINELIB_NAME_AW(InsertMenuItem)
-BOOL      WINAPI IntersectRect(LPRECT,const RECT*,const RECT*);
-BOOL      WINAPI InvalidateRect(HWND,const RECT*,BOOL);
-BOOL      WINAPI InvalidateRgn(HWND,HRGN,BOOL);
-BOOL      WINAPI InvertRect(HDC,const RECT*);
-BOOL      WINAPI IsCharAlphaA(CHAR);
-BOOL      WINAPI IsCharAlphaW(WCHAR);
+INT         WINAPI InternalGetWindowText(HWND,LPWSTR,INT);
+BOOL        WINAPI IntersectRect(LPRECT,const RECT*,const RECT*);
+BOOL        WINAPI InvalidateRect(HWND,const RECT*,BOOL);
+BOOL        WINAPI InvalidateRgn(HWND,HRGN,BOOL);
+BOOL        WINAPI InvertRect(HDC,const RECT*);
+BOOL        WINAPI IsCharAlphaA(CHAR);
+BOOL        WINAPI IsCharAlphaW(WCHAR);
 #define     IsCharAlpha WINELIB_NAME_AW(IsCharAlpha)
 BOOL      WINAPI IsCharAlphaNumericA(CHAR);
 BOOL      WINAPI IsCharAlphaNumericW(WCHAR);
@@ -3445,8 +4164,8 @@ BOOL      WINAPI KillTimer(HWND,UINT);
 HACCEL    WINAPI LoadAcceleratorsA(HINSTANCE,LPCSTR);
 HACCEL    WINAPI LoadAcceleratorsW(HINSTANCE,LPCWSTR);
 #define     LoadAccelerators WINELIB_NAME_AW(LoadAccelerators)
-HBITMAP   WINAPI LoadBitmapA(HANDLE,LPCSTR);
-HBITMAP   WINAPI LoadBitmapW(HANDLE,LPCWSTR);
+HBITMAP     WINAPI LoadBitmapA(HINSTANCE,LPCSTR);
+HBITMAP     WINAPI LoadBitmapW(HINSTANCE,LPCWSTR);
 #define     LoadBitmap WINELIB_NAME_AW(LoadBitmap)
 HCURSOR   WINAPI LoadCursorA(HINSTANCE,LPCSTR);
 HCURSOR   WINAPI LoadCursorW(HINSTANCE,LPCWSTR);
@@ -3476,12 +4195,14 @@ UINT      WINAPI MapVirtualKeyA(UINT,UINT);
 UINT      WINAPI MapVirtualKeyW(UINT,UINT);
 #define     MapVirtualKey WINELIB_NAME_AW(MapVirtualKey)
 UINT        WINAPI MapVirtualKeyExA(UINT,UINT,HKL);
+UINT        WINAPI MapVirtualKeyExW(UINT,UINT,HKL);
 #define     MapVirtualKeyEx WINELIB_NAME_AW(MapVirtualKeyEx)
-BOOL      WINAPI MapDialogRect(HWND,LPRECT);
-INT       WINAPI MapWindowPoints(HWND,HWND,LPPOINT,UINT);
-BOOL      WINAPI MessageBeep(UINT);
-INT       WINAPI MessageBoxA(HWND,LPCSTR,LPCSTR,UINT);
-INT       WINAPI MessageBoxW(HWND,LPCWSTR,LPCWSTR,UINT);
+BOOL        WINAPI MapDialogRect(HWND,LPRECT);
+INT         WINAPI MapWindowPoints(HWND,HWND,LPPOINT,UINT);
+UINT        WINAPI MenuItemFromPoint(HWND,HMENU,POINT);
+BOOL        WINAPI MessageBeep(UINT);
+INT         WINAPI MessageBoxA(HWND,LPCSTR,LPCSTR,UINT);
+INT         WINAPI MessageBoxW(HWND,LPCWSTR,LPCWSTR,UINT);
 #define     MessageBox WINELIB_NAME_AW(MessageBox)
 INT       WINAPI MessageBoxIndirectA(LPMSGBOXPARAMSA);
 INT       WINAPI MessageBoxIndirectW(LPMSGBOXPARAMSW);
@@ -3499,6 +4220,9 @@ BOOL      WINAPI OemToCharBuffW(LPCSTR,LPWSTR,DWORD);
 BOOL      WINAPI OffsetRect(LPRECT,INT,INT);
 BOOL      WINAPI OpenClipboard(HWND);
 BOOL      WINAPI OpenIcon(HWND);
+HWINSTA     WINAPI OpenWindowStationA(LPSTR,BOOL,ACCESS_MASK);
+HWINSTA     WINAPI OpenWindowStationW(LPWSTR,BOOL,ACCESS_MASK);
+#define     OpenWindowStation WINELIB_NAME_AW(OpenWindowStation)
 BOOL      WINAPI PeekMessageA(LPMSG,HWND,UINT,UINT,UINT);
 BOOL      WINAPI PeekMessageW(LPMSG,HWND,UINT,UINT,UINT);
 #define     PeekMessage WINELIB_NAME_AW(PeekMessage)
@@ -3530,36 +4254,32 @@ BOOL      WINAPI RemoveMenu(HMENU,UINT,UINT);
 HANDLE    WINAPI RemovePropA(HWND,LPCSTR);
 HANDLE    WINAPI RemovePropW(HWND,LPCWSTR);
 #define     RemoveProp WINELIB_NAME_AW(RemoveProp)
-BOOL      WINAPI ReplyMessage(LRESULT);
-BOOL      WINAPI ScreenToClient(HWND,LPPOINT);
+BOOL        WINAPI ReplyMessage(LRESULT);
+BOOL        WINAPI ScreenToClient(HWND,LPPOINT);
 VOID        WINAPI ScrollChildren(HWND,UINT,WPARAM,LPARAM);
-BOOL      WINAPI ScrollDC(HDC,INT,INT,const RECT*,const RECT*,
-                      HRGN,LPRECT);
-BOOL      WINAPI ScrollWindow(HWND,INT,INT,const RECT*,const RECT*);
-INT       WINAPI ScrollWindowEx(HWND,INT,INT,const RECT*,
-                                    const RECT*,HRGN,LPRECT,UINT);
+BOOL        WINAPI ScrollDC(HDC,INT,INT,const RECT*,const RECT*,HRGN,LPRECT);
+BOOL        WINAPI ScrollWindow(HWND,INT,INT,const RECT*,const RECT*);
+INT         WINAPI ScrollWindowEx(HWND,INT,INT,const RECT*,const RECT*,HRGN,LPRECT,UINT);
 LRESULT     WINAPI SendDlgItemMessageA(HWND,INT,UINT,WPARAM,LPARAM);
 LRESULT     WINAPI SendDlgItemMessageW(HWND,INT,UINT,WPARAM,LPARAM);
 #define     SendDlgItemMessage WINELIB_NAME_AW(SendDlgItemMessage)
+UINT        WINAPI SendInput(UINT,LPINPUT,int);
 LRESULT     WINAPI SendMessageA(HWND,UINT,WPARAM,LPARAM);
 LRESULT     WINAPI SendMessageW(HWND,UINT,WPARAM,LPARAM);
 #define     SendMessage WINELIB_NAME_AW(SendMessage)
-LRESULT     WINAPI SendMessageTimeoutA(HWND,UINT,WPARAM,LPARAM,UINT,
-                                        UINT,LPDWORD);
-LRESULT     WINAPI SendMessageTimeoutW(HWND,UINT,WPARAM,LPARAM,UINT,
-                                        UINT,LPDWORD);
+LRESULT     WINAPI SendMessageTimeoutA(HWND,UINT,WPARAM,LPARAM,UINT,UINT,LPDWORD);
+LRESULT     WINAPI SendMessageTimeoutW(HWND,UINT,WPARAM,LPARAM,UINT,UINT,LPDWORD);
 #define     SendMessageTimeout WINELIB_NAME_AW(SendMessageTimeout)
-HWND      WINAPI SetActiveWindow(HWND);
-HWND      WINAPI SetCapture(HWND);
-BOOL      WINAPI SetCaretBlinkTime(UINT);
-BOOL      WINAPI SetCaretPos(INT,INT);
+HWND        WINAPI SetActiveWindow(HWND);
+HWND        WINAPI SetCapture(HWND);
+BOOL        WINAPI SetCaretBlinkTime(UINT);
+BOOL        WINAPI SetCaretPos(INT,INT);
 LONG        WINAPI SetClassLongA(HWND,INT,LONG);
 LONG        WINAPI SetClassLongW(HWND,INT,LONG);
 #define     SetClassLong WINELIB_NAME_AW(SetClassLong)
 WORD        WINAPI SetClassWord(HWND,INT,WORD);
 HANDLE    WINAPI SetClipboardData(UINT,HANDLE);
 HWND      WINAPI SetClipboardViewer(HWND);
-BOOL      WINAPI SetCommBreak(HANDLE);
 HCURSOR   WINAPI SetCursor(HCURSOR);
 BOOL      WINAPI SetCursorPos(INT,INT);
 BOOL      WINAPI SetDeskWallPaper(LPCSTR);
@@ -3576,6 +4296,7 @@ BOOL      WINAPI SetMenuContextHelpId(HMENU,DWORD);
 BOOL      WINAPI SetMenuItemBitmaps(HMENU,UINT,UINT,HBITMAP,HBITMAP);
 BOOL      WINAPI SetMessageQueue(INT);
 BOOL      WINAPI SetProcessDefaultLayout(DWORD);
+BOOL      WINAPI SetProcessWindowStation(HWINSTA);
 HWND      WINAPI SetParent(HWND,HWND);
 BOOL      WINAPI SetPropA(HWND,LPCSTR,HANDLE);
 BOOL      WINAPI SetPropW(HWND,LPCWSTR,HANDLE);
@@ -3585,12 +4306,12 @@ BOOL      WINAPI SetRectEmpty(LPRECT);
 INT       WINAPI SetScrollInfo(HWND,INT,const SCROLLINFO*,BOOL);
 INT       WINAPI SetScrollPos(HWND,INT,INT,BOOL);
 BOOL      WINAPI SetScrollRange(HWND,INT,INT,INT,BOOL);
-BOOL      WINAPI SetSysColors(INT,const INT*,const COLORREF*);
 #define     SetSysModalWindow(hwnd) ((HWND)0)
 BOOL      WINAPI SetSystemCursor(HCURSOR,DWORD);
 BOOL      WINAPI SetSystemMenu(HWND,HMENU);
 UINT      WINAPI SetSystemTimer(HWND,UINT,UINT,TIMERPROC);
 UINT      WINAPI SetTimer(HWND,UINT,UINT,TIMERPROC);
+BOOL        WINAPI SetUserObjectSecurity(HANDLE,PSECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
 LONG        WINAPI SetWindowLongA(HWND,INT,LONG);
 LONG        WINAPI SetWindowLongW(HWND,INT,LONG);
 #define     SetWindowLong WINELIB_NAME_AW(SetWindowLong)
@@ -3623,6 +4344,7 @@ LONG        WINAPI TabbedTextOutW(HDC,INT,INT,LPCWSTR,INT,INT,const INT*,INT);
 #define     TabbedTextOut WINELIB_NAME_AW(TabbedTextOut)
 INT       WINAPI ToAscii(UINT,UINT,LPBYTE,LPWORD,UINT);
 INT       WINAPI ToAsciiEx(UINT,UINT,LPBYTE,LPWORD,UINT,HKL);
+BOOL      WINAPI TrackMouseEvent(LPTRACKMOUSEEVENT);
 BOOL      WINAPI TrackPopupMenu(HMENU,UINT,INT,INT,INT,HWND,const RECT*);
 INT       WINAPI TranslateAccelerator(HWND,HACCEL,LPMSG);
 BOOL      WINAPI TranslateMDISysAccel(HWND,LPMSG);
@@ -3634,6 +4356,7 @@ BOOL      WINAPI UnregisterClassA(LPCSTR,HINSTANCE);
 BOOL      WINAPI UnregisterClassW(LPCWSTR,HINSTANCE);
 #define     UnregisterClass WINELIB_NAME_AW(UnregisterClass)
 VOID        WINAPI UpdateWindow(HWND);
+UINT        WINAPI UserRealizePalette(HDC);
 VOID        WINAPI ValidateRect(HWND,const RECT*);
 VOID        WINAPI ValidateRgn(HWND,HRGN);
 WORD        WINAPI VkKeyScanA(CHAR);
@@ -3642,37 +4365,26 @@ WORD        WINAPI VkKeyScanW(WCHAR);
 WORD        WINAPI VkKeyScanExA(CHAR, HKL);
 WORD        WINAPI VkKeyScanExW(WCHAR, HKL);
 #define     VkKeyScanEx WINELIB_NAME_AW(VkKeyScanEx)
+BOOL        WINAPI WaitMessage(void);
 HWND      WINAPI WindowFromDC(HDC);
 HWND      WINAPI WindowFromPoint(POINT);
 BOOL      WINAPI WinHelpA(HWND,LPCSTR,UINT,DWORD);
 BOOL      WINAPI WinHelpW(HWND,LPCWSTR,UINT,DWORD);
 #define     WinHelp WINELIB_NAME_AW(WinHelp)
-INT       WINAPIV wsnprintfA(LPSTR,UINT,LPCSTR,...);
-INT       WINAPIV wsnprintfW(LPWSTR,UINT,LPCWSTR,...);
-#define     wsnprintf WINELIB_NAME_AW(wsnprintf)
 INT       WINAPIV wsprintfA(LPSTR,LPCSTR,...);
 INT       WINAPIV wsprintfW(LPWSTR,LPCWSTR,...);
 #define     wsprintf WINELIB_NAME_AW(wsprintf)
-INT       WINAPI wvsnprintfA(LPSTR,UINT,LPCSTR,va_list);
-INT       WINAPI wvsnprintfW(LPWSTR,UINT,LPCWSTR,va_list);
-#define     wvsnprintf WINELIB_NAME_AW(wvsnprintf)
 INT       WINAPI wvsprintfA(LPSTR,LPCSTR,va_list);
 INT       WINAPI wvsprintfW(LPWSTR,LPCWSTR,va_list);
 #define     wvsprintf WINELIB_NAME_AW(wvsprintf)
 
-BOOL      WINAPI RegisterShellHook16(HWND16,UINT16);
+/* Undocumented functions */
+
 /* NOTE: This is SYSTEM.3, not USER.182, which is also named KillSystemTimer */
 WORD        WINAPI SYSTEM_KillSystemTimer( WORD );
 
-/* Extra functions that don't exist in the Windows API */
-
-HPEN      WINAPI GetSysColorPen(INT);
-INT       WINAPI LoadMessageA(HMODULE,UINT,WORD,LPSTR,INT);
-INT       WINAPI LoadMessageW(HMODULE,UINT,WORD,LPWSTR,INT);
-
-VOID        WINAPI ScreenSwitchEnable16(WORD);
-
-#define WC_DIALOG    (LPSTR)((DWORD)((WORD)( 0x8002)))
+HRESULT     WINAPI PrivateExtractIconsA(LPCSTR,INT,DWORD,DWORD,HICON*,DWORD,UINT,DWORD);
+HRESULT     WINAPI PrivateExtractIconsW(LPCWSTR,INT,DWORD,DWORD,HICON*,DWORD,UINT,DWORD);
 
 #ifdef __cplusplus
 }