#ifndef __WINE_WINDOWS_H
#define __WINE_WINDOWS_H

#ifdef __cplusplus
extern "C" {
#endif

#include "wintypes.h"

#pragma pack(1)

/* The SIZE structure */

typedef struct
{
    INT16  cx;
    INT16  cy;
} SIZE16, *LPSIZE16;

typedef struct
{
    INT32  cx;
    INT32  cy;
} SIZE32, *LPSIZE32;

DECL_WINELIB_TYPE(SIZE);
DECL_WINELIB_TYPE(LPSIZE);

#define CONV_SIZE16TO32(s16,s32) \
            ((s32)->cx = (INT32)(s16)->cx, (s32)->cy = (INT32)(s16)->cy)
#define CONV_SIZE32TO16(s32,s16) \
            ((s16)->cx = (INT16)(s32)->cx, (s16)->cy = (INT16)(s32)->cy)

/* The POINT structure */

typedef struct
{
    INT16  x;
    INT16  y;
} POINT16, *LPPOINT16;

typedef struct
{
    INT32  x;
    INT32  y;
} POINT32, *LPPOINT32;

DECL_WINELIB_TYPE(POINT);
DECL_WINELIB_TYPE(LPPOINT);

#define CONV_POINT16TO32(p16,p32) \
            ((p32)->x = (INT32)(p16)->x, (p32)->y = (INT32)(p16)->y)
#define CONV_POINT32TO16(p32,p16) \
            ((p16)->x = (INT16)(p32)->x, (p16)->y = (INT16)(p32)->y)

#define MAKEPOINT16(l) (*((POINT16 *)&(l)))
#define MAKEPOINT WINELIB_NAME(MAKEPOINT)

/* The RECT structure */

typedef struct
{
    INT16  left;
    INT16  top;
    INT16  right;
    INT16  bottom;
} RECT16, *LPRECT16;

typedef struct
{
    INT32  left;
    INT32  top;
    INT32  right;
    INT32  bottom;
} RECT32, *LPRECT32;

DECL_WINELIB_TYPE(RECT);
DECL_WINELIB_TYPE(LPRECT);

#define CONV_RECT16TO32(r16,r32) \
    ((r32)->left  = (INT32)(r16)->left,  (r32)->top    = (INT32)(r16)->top, \
     (r32)->right = (INT32)(r16)->right, (r32)->bottom = (INT32)(r16)->bottom)
#define CONV_RECT32TO16(r32,r16) \
    ((r16)->left  = (INT16)(r32)->left,  (r16)->top    = (INT16)(r32)->top, \
     (r16)->right = (INT16)(r32)->right, (r16)->bottom = (INT16)(r32)->bottom)

typedef struct
{
    WORD   wFirst;
    WORD   wSecond;
    INT16  iKernAmount;
} KERNINGPAIR16, *LPKERNINGPAIR16;

typedef struct
{
    WORD   wFirst;
    WORD   wSecond;
    INT32  iKernAmount;
} KERNINGPAIR32, *LPKERNINGPAIR32;

DECL_WINELIB_TYPE(KERNINGPAIR);
DECL_WINELIB_TYPE(LPKERNINGPAIR);

typedef struct
{
    HDC16   hdc;
    BOOL16  fErase;
    RECT16  rcPaint;
    BOOL16  fRestore;
    BOOL16  fIncUpdate;
    BYTE    rgbReserved[16];
} PAINTSTRUCT16, *LPPAINTSTRUCT16;

typedef struct
{
    HDC32   hdc;
    BOOL32  fErase;
    RECT32  rcPaint;
    BOOL32  fRestore;
    BOOL32  fIncUpdate;
    BYTE    rgbReserved[32];
} PAINTSTRUCT32, *LPPAINTSTRUCT32;

DECL_WINELIB_TYPE(PAINTSTRUCT);
DECL_WINELIB_TYPE(LPPAINTSTRUCT);


  /* Windows */

typedef struct
{
    LPVOID      lpCreateParams;
    HINSTANCE16 hInstance;
    HMENU16     hMenu;
    HWND16      hwndParent;
    INT16       cy;
    INT16       cx;
    INT16       y;
    INT16       x;
    LONG        style WINE_PACKED;
    SEGPTR      lpszName WINE_PACKED;
    SEGPTR      lpszClass WINE_PACKED;
    DWORD       dwExStyle WINE_PACKED;
} CREATESTRUCT16, *LPCREATESTRUCT16;

typedef struct
{
    LPVOID      lpCreateParams;
    HINSTANCE32 hInstance;
    HMENU32     hMenu;
    HWND32      hwndParent;
    INT32       cy;
    INT32       cx;
    INT32       y;
    INT32       x;
    LONG        style;
    LPCSTR      lpszName;
    LPCSTR      lpszClass;
    DWORD       dwExStyle;
} CREATESTRUCT32A, *LPCREATESTRUCT32A;

typedef struct
{
    LPVOID      lpCreateParams;
    HINSTANCE32 hInstance;
    HMENU32     hMenu;
    HWND32      hwndParent;
    INT32       cy;
    INT32       cx;
    INT32       y;
    INT32       x;
    LONG        style;
    LPCWSTR     lpszName;
    LPCWSTR     lpszClass;
    DWORD       dwExStyle;
} CREATESTRUCT32W, *LPCREATESTRUCT32W;

DECL_WINELIB_TYPE_AW(CREATESTRUCT);
DECL_WINELIB_TYPE_AW(LPCREATESTRUCT);

typedef struct 
{
    HMENU16   hWindowMenu;
    UINT16    idFirstChild;
} CLIENTCREATESTRUCT16, *LPCLIENTCREATESTRUCT16;

typedef struct 
{
    HMENU32   hWindowMenu;
    UINT32    idFirstChild;
} CLIENTCREATESTRUCT32, *LPCLIENTCREATESTRUCT32;

DECL_WINELIB_TYPE(CLIENTCREATESTRUCT);
DECL_WINELIB_TYPE(LPCLIENTCREATESTRUCT);

typedef struct
{
    SEGPTR       szClass;
    SEGPTR       szTitle;
    HINSTANCE16  hOwner;
    INT16        x;
    INT16        y;
    INT16        cx;
    INT16        cy;
    DWORD        style WINE_PACKED;
    LPARAM       lParam WINE_PACKED;
} MDICREATESTRUCT16, *LPMDICREATESTRUCT16;

typedef struct
{
    LPCSTR       szClass;
    LPCSTR       szTitle;
    HINSTANCE32  hOwner;
    INT32        x;
    INT32        y;
    INT32        cx;
    INT32        cy;
    DWORD        style;
    LPARAM       lParam;
} MDICREATESTRUCT32A, *LPMDICREATESTRUCT32A;

typedef struct
{
    LPCWSTR      szClass;
    LPCWSTR      szTitle;
    HINSTANCE32  hOwner;
    INT32        x;
    INT32        y;
    INT32        cx;
    INT32        cy;
    DWORD        style;
    LPARAM       lParam;
} MDICREATESTRUCT32W, *LPMDICREATESTRUCT32W;

DECL_WINELIB_TYPE_AW(MDICREATESTRUCT);
DECL_WINELIB_TYPE_AW(LPMDICREATESTRUCT);

#define MDITILE_VERTICAL    0    
#define MDITILE_HORIZONTAL  1
#define MDIS_ALLCHILDSTYLES 0x0001

typedef struct {
    DWORD   styleOld;
    DWORD   styleNew;
} STYLESTRUCT, *LPSTYLESTRUCT;

  /* 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_WNDPROC         (-4)
#define DWL_MSGRESULT	    0
#define DWL_DLGPROC	    4
#define DWL_USER	    8

  /* GetWindow() constants */
#define GW_HWNDFIRST	0
#define GW_HWNDLAST	1
#define GW_HWNDNEXT	2
#define GW_HWNDPREV	3
#define GW_OWNER	4
#define GW_CHILD	5

  /* WM_GETMINMAXINFO struct */
typedef struct
{
    POINT16   ptReserved;
    POINT16   ptMaxSize;
    POINT16   ptMaxPosition;
    POINT16   ptMinTrackSize;
    POINT16   ptMaxTrackSize;
} MINMAXINFO16;

typedef struct
{
    POINT32   ptReserved;
    POINT32   ptMaxSize;
    POINT32   ptMaxPosition;
    POINT32   ptMinTrackSize;
    POINT32   ptMaxTrackSize;
} MINMAXINFO32;

DECL_WINELIB_TYPE(MINMAXINFO);

  /* RedrawWindow() flags */
#define RDW_INVALIDATE       0x0001
#define RDW_INTERNALPAINT    0x0002
#define RDW_ERASE            0x0004
#define RDW_VALIDATE         0x0008
#define RDW_NOINTERNALPAINT  0x0010
#define RDW_NOERASE          0x0020
#define RDW_NOCHILDREN       0x0040
#define RDW_ALLCHILDREN      0x0080
#define RDW_UPDATENOW        0x0100
#define RDW_ERASENOW         0x0200
#define RDW_FRAME            0x0400
#define RDW_NOFRAME          0x0800

  /* WM_WINDOWPOSCHANGING/CHANGED struct */
typedef struct
{
    HWND16  hwnd;
    HWND16  hwndInsertAfter;
    INT16   x;
    INT16   y;
    INT16   cx;
    INT16   cy;
    UINT16  flags;
} WINDOWPOS16;

typedef struct
{
    HWND32  hwnd;
    HWND32  hwndInsertAfter;
    INT32   x;
    INT32   y;
    INT32   cx;
    INT32   cy;
    UINT32  flags;
} WINDOWPOS32;

DECL_WINELIB_TYPE(WINDOWPOS);

  /* SetWindowPlacement() struct */
typedef struct
{
    UINT16   length;
    UINT16   flags;
    UINT16   showCmd;
    POINT16  ptMinPosition WINE_PACKED;
    POINT16  ptMaxPosition WINE_PACKED;
    RECT16   rcNormalPosition WINE_PACKED;
} WINDOWPLACEMENT16, *LPWINDOWPLACEMENT16;

typedef struct
{
    UINT32   length;
    UINT32   flags;
    UINT32   showCmd;
    POINT32  ptMinPosition WINE_PACKED;
    POINT32  ptMaxPosition WINE_PACKED;
    RECT32   rcNormalPosition WINE_PACKED;
} WINDOWPLACEMENT32, *LPWINDOWPLACEMENT32;

DECL_WINELIB_TYPE(WINDOWPLACEMENT);
DECL_WINELIB_TYPE(LPWINDOWPLACEMENT);

  /* WINDOWPLACEMENT flags */
#define WPF_SETMINPOSITION      0x0001
#define WPF_RESTORETOMAXIMIZED  0x0002

  /* WM_MOUSEACTIVATE return values */
#define MA_ACTIVATE             1
#define MA_ACTIVATEANDEAT       2
#define MA_NOACTIVATE           3
#define MA_NOACTIVATEANDEAT     4

  /* WM_ACTIVATE wParam values */
#define WA_INACTIVE             0
#define WA_ACTIVE               1
#define WA_CLICKACTIVE          2

  /* WM_NCCALCSIZE parameter structure */
typedef struct
{
    RECT16  rgrc[3];
    SEGPTR  lppos;
} NCCALCSIZE_PARAMS16, *LPNCCALCSIZE_PARAMS16;

typedef struct
{
    RECT32       rgrc[3];
    WINDOWPOS32 *lppos;
} NCCALCSIZE_PARAMS32, *LPNCCALCSIZE_PARAMS32;

DECL_WINELIB_TYPE(NCCALCSIZE_PARAMS);
DECL_WINELIB_TYPE(LPNCCALCSIZE_PARAMS);

  /* WM_NCCALCSIZE return flags */
#define WVR_ALIGNTOP        0x0010
#define WVR_ALIGNLEFT       0x0020
#define WVR_ALIGNBOTTOM     0x0040
#define WVR_ALIGNRIGHT      0x0080
#define WVR_HREDRAW         0x0100
#define WVR_VREDRAW         0x0200
#define WVR_REDRAW          (WVR_HREDRAW | WVR_VREDRAW)
#define WVR_VALIDRECTS      0x0400

  /* WM_NCHITTEST return codes */
#define HTERROR             (-2)
#define HTTRANSPARENT       (-1)
#define HTNOWHERE           0
#define HTCLIENT            1
#define HTCAPTION           2
#define HTSYSMENU           3
#define HTSIZE              4
#define HTMENU              5
#define HTHSCROLL           6
#define HTVSCROLL           7
#define HTMINBUTTON         8
#define HTMAXBUTTON         9
#define HTLEFT              10
#define HTRIGHT             11
#define HTTOP               12
#define HTTOPLEFT           13
#define HTTOPRIGHT          14
#define HTBOTTOM            15
#define HTBOTTOMLEFT        16
#define HTBOTTOMRIGHT       17
#define HTBORDER            18
#define HTGROWBOX           HTSIZE
#define HTREDUCE            HTMINBUTTON
#define HTZOOM              HTMAXBUTTON

  /* WM_SYSCOMMAND parameters */
#define SC_SIZE         0xf000
#define SC_MOVE         0xf010
#define SC_MINIMIZE     0xf020
#define SC_MAXIMIZE     0xf030
#define SC_NEXTWINDOW   0xf040
#define SC_PREVWINDOW   0xf050
#define SC_CLOSE        0xf060
#define SC_VSCROLL      0xf070
#define SC_HSCROLL      0xf080
#define SC_MOUSEMENU    0xf090
#define SC_KEYMENU      0xf100
#define SC_ARRANGE      0xf110
#define SC_RESTORE      0xf120
#define SC_TASKLIST     0xf130
#define SC_SCREENSAVE   0xf140
#define SC_HOTKEY       0xf150

/****** Window classes ******/

typedef struct
{
    UINT16      style;
    WNDPROC16   lpfnWndProc WINE_PACKED;
    INT16       cbClsExtra;
    INT16       cbWndExtra;
    HANDLE16    hInstance;
    HICON16     hIcon;
    HCURSOR16   hCursor;
    HBRUSH16    hbrBackground;
    SEGPTR      lpszMenuName WINE_PACKED;
    SEGPTR      lpszClassName WINE_PACKED;
} WNDCLASS16, *LPWNDCLASS16;

typedef struct
{
    UINT32      style;
    WNDPROC32   lpfnWndProc;
    INT32       cbClsExtra;
    INT32       cbWndExtra;
    HINSTANCE32 hInstance;
    HICON32     hIcon;
    HCURSOR32   hCursor;
    HBRUSH32    hbrBackground;
    LPCSTR      lpszMenuName;
    LPCSTR      lpszClassName;
} WNDCLASS32A, *LPWNDCLASS32A;

typedef struct
{
    UINT32      style;
    WNDPROC32   lpfnWndProc;
    INT32       cbClsExtra;
    INT32       cbWndExtra;
    HINSTANCE32 hInstance;
    HICON32     hIcon;
    HCURSOR32   hCursor;
    HBRUSH32    hbrBackground;
    LPCWSTR     lpszMenuName;
    LPCWSTR     lpszClassName;
} WNDCLASS32W, *LPWNDCLASS32W;

DECL_WINELIB_TYPE_AW(WNDCLASS);
DECL_WINELIB_TYPE_AW(LPWNDCLASS);

typedef struct
{
    UINT32      cbSize;
    UINT32      style;
    WNDPROC16   lpfnWndProc;
    INT16       cbClsExtra;
    INT16       cbWndExtra;
    HANDLE16    hInstance;
    HICON16     hIcon;
    HCURSOR16   hCursor;
    HBRUSH16    hbrBackground;
    SEGPTR      lpszMenuName;
    SEGPTR      lpszClassName;
    HICON16     hIconSm;
} WNDCLASSEX16, *LPWNDCLASSEX16;

typedef struct
{
    UINT32      cbSize;
    UINT32      style;
    WNDPROC32   lpfnWndProc;
    INT32       cbClsExtra;
    INT32       cbWndExtra;
    HINSTANCE32 hInstance;
    HICON32     hIcon;
    HCURSOR32   hCursor;
    HBRUSH32    hbrBackground;
    LPCSTR      lpszMenuName;
    LPCSTR      lpszClassName;
    HICON32     hIconSm;
} WNDCLASSEX32A, *LPWNDCLASSEX32A;

typedef struct
{
    UINT32      cbSize;
    UINT32      style;
    WNDPROC32   lpfnWndProc;
    INT32       cbClsExtra;
    INT32       cbWndExtra;
    HINSTANCE32 hInstance;
    HICON32     hIcon;
    HCURSOR32   hCursor;
    HBRUSH32    hbrBackground;
    LPCWSTR     lpszMenuName;
    LPCWSTR     lpszClassName;
    HICON32     hIconSm;
} WNDCLASSEX32W, *LPWNDCLASSEX32W;

DECL_WINELIB_TYPE_AW(WNDCLASSEX);
DECL_WINELIB_TYPE_AW(LPWNDCLASSEX);

#define CS_VREDRAW          0x0001
#define CS_HREDRAW          0x0002
#define CS_KEYCVTWINDOW     0x0004
#define CS_DBLCLKS          0x0008
#define CS_OWNDC            0x0020
#define CS_CLASSDC          0x0040
#define CS_PARENTDC         0x0080
#define CS_NOKEYCVT         0x0100
#define CS_NOCLOSE          0x0200
#define CS_SAVEBITS         0x0800
#define CS_BYTEALIGNCLIENT  0x1000
#define CS_BYTEALIGNWINDOW  0x2000
#define CS_GLOBALCLASS      0x4000

  /* 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_WNDPROC         (-24)
#define GCW_STYLE           (-26)
#define GCL_STYLE           GCW_STYLE
#define GCW_ATOM            (-32)
#define GCW_HICONSM         (-34)
#define GCL_HICONSM         GCW_HICONSM

/***** Window hooks *****/

  /* Hook values */
#define WH_MIN		    (-1)
#define WH_MSGFILTER	    (-1)
#define WH_JOURNALRECORD    0
#define WH_JOURNALPLAYBACK  1
#define WH_KEYBOARD	    2
#define WH_GETMESSAGE	    3
#define WH_CALLWNDPROC	    4
#define WH_CBT		    5
#define WH_SYSMSGFILTER	    6
#define WH_MOUSE	    7
#define WH_HARDWARE	    8
#define WH_DEBUG	    9
#define WH_SHELL            10
#define WH_FOREGROUNDIDLE   11
#define WH_CALLWNDPROCRET   12
#define WH_MAX              12

#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
#define HC_GETNEXT          1
#define HC_SKIP             2
#define HC_NOREMOVE         3
#define HC_NOREM            HC_NOREMOVE
#define HC_SYSMODALON       4
#define HC_SYSMODALOFF      5

  /* CallMsgFilter() values */
#define MSGF_DIALOGBOX      0
#define MSGF_MESSAGEBOX     1
#define MSGF_MENU           2
#define MSGF_MOVE           3
#define MSGF_SIZE           4
#define MSGF_SCROLLBAR      5
#define MSGF_NEXTWINDOW     6
#define MSGF_MAINLOOP       8
#define MSGF_USER        4096

  /* Windows Exit Procedure flag values */
#define	WEP_FREE_DLL        0
#define	WEP_SYSTEM_EXIT     1

  /* Journalling hook structure */

typedef struct
{
    UINT16  message;
    UINT16  paramL;
    UINT16  paramH;
    DWORD   time WINE_PACKED;
} EVENTMSG16, *LPEVENTMSG16;

typedef struct
{
    UINT32  message;
    UINT32  paramL;
    UINT32  paramH;
    DWORD   time;
    HWND32  hwnd;
} EVENTMSG32, *LPEVENTMSG32;

DECL_WINELIB_TYPE(EVENTMSG);
DECL_WINELIB_TYPE(LPEVENTMSG);

  /* Mouse hook structure */

typedef struct
{
    POINT16 pt;
    HWND16  hwnd;
    UINT16  wHitTestCode;
    DWORD   dwExtraInfo;
} MOUSEHOOKSTRUCT16, *LPMOUSEHOOKSTRUCT16;

typedef struct
{
    POINT32 pt;
    HWND32  hwnd;
    UINT32  wHitTestCode;
    DWORD   dwExtraInfo;
} MOUSEHOOKSTRUCT32, *LPMOUSEHOOKSTRUCT32;

DECL_WINELIB_TYPE(MOUSEHOOKSTRUCT);
DECL_WINELIB_TYPE(LPMOUSEHOOKSTRUCT);

  /* Hardware hook structure */

typedef struct
{
    HWND16    hWnd;
    UINT16    wMessage;
    WPARAM16  wParam;
    LPARAM    lParam WINE_PACKED;
} HARDWAREHOOKSTRUCT16, *LPHARDWAREHOOKSTRUCT16;

typedef struct
{
    HWND32    hWnd;
    UINT32    wMessage;
    WPARAM32  wParam;
    LPARAM    lParam;
} HARDWAREHOOKSTRUCT32, *LPHARDWAREHOOKSTRUCT32;

DECL_WINELIB_TYPE(HARDWAREHOOKSTRUCT);
DECL_WINELIB_TYPE(LPHARDWAREHOOKSTRUCT);

  /* CBT hook values */
#define HCBT_MOVESIZE	    0
#define HCBT_MINMAX	    1
#define HCBT_QS 	    2
#define HCBT_CREATEWND	    3
#define HCBT_DESTROYWND	    4
#define HCBT_ACTIVATE	    5
#define HCBT_CLICKSKIPPED   6
#define HCBT_KEYSKIPPED     7
#define HCBT_SYSCOMMAND	    8
#define HCBT_SETFOCUS	    9

  /* CBT hook structures */

typedef struct
{
    CREATESTRUCT16  *lpcs;
    HWND16           hwndInsertAfter;
} CBT_CREATEWND16, *LPCBT_CREATEWND16;

typedef struct
{
    CREATESTRUCT32A *lpcs;
    HWND32           hwndInsertAfter;
} CBT_CREATEWND32A, *LPCBT_CREATEWND32A;

typedef struct
{
    CREATESTRUCT32W *lpcs;
    HWND32           hwndInsertAfter;
} CBT_CREATEWND32W, *LPCBT_CREATEWND32W;

DECL_WINELIB_TYPE_AW(CBT_CREATEWND);
DECL_WINELIB_TYPE_AW(LPCBT_CREATEWND);

typedef struct
{
    BOOL16    fMouse;
    HWND16    hWndActive;
} CBTACTIVATESTRUCT16, *LPCBTACTIVATESTRUCT16;

typedef struct
{
    BOOL32    fMouse;
    HWND32    hWndActive;
} CBTACTIVATESTRUCT32, *LPCBTACTIVATESTRUCT32;

DECL_WINELIB_TYPE(CBTACTIVATESTRUCT);
DECL_WINELIB_TYPE(LPCBTACTIVATESTRUCT);

  /* Shell hook values */
#define HSHELL_WINDOWCREATED       1
#define HSHELL_WINDOWDESTROYED     2
#define HSHELL_ACTIVATESHELLWINDOW 3

  /* Debug hook structure */

typedef struct
{
    HMODULE16   hModuleHook;
    LPARAM	reserved WINE_PACKED;
    LPARAM	lParam WINE_PACKED;
    WPARAM16    wParam;
    INT16       code;
} DEBUGHOOKINFO16, *LPDEBUGHOOKINFO16;

typedef struct
{
    DWORD       idThread;
    DWORD       idThreadInstaller;
    LPARAM      lParam;
    WPARAM32    wParam;
    INT32       code;
} DEBUGHOOKINFO32, *LPDEBUGHOOKINFO32;

DECL_WINELIB_TYPE(DEBUGHOOKINFO);
DECL_WINELIB_TYPE(LPDEBUGHOOKINFO);

/***** Dialogs *****/

  /* cbWndExtra bytes for dialog class */
#define DLGWINDOWEXTRA      30

  /* Dialog styles */
#define DS_ABSALIGN         0x001
#define DS_SYSMODAL         0x002
#define DS_LOCALEDIT        0x020
#define DS_SETFONT          0x040
#define DS_MODALFRAME       0x080
#define DS_NOIDLEMSG        0x100

  /* Dialog messages */
#define DM_GETDEFID         (WM_USER+0)
#define DM_SETDEFID         (WM_USER+1)

#define DC_HASDEFID         0x534b

  /* WM_GETDLGCODE values */
#define DLGC_WANTARROWS      0x0001
#define DLGC_WANTTAB         0x0002
#define DLGC_WANTALLKEYS     0x0004
#define DLGC_WANTMESSAGE     0x0004
#define DLGC_HASSETSEL       0x0008
#define DLGC_DEFPUSHBUTTON   0x0010
#define DLGC_UNDEFPUSHBUTTON 0x0020
#define DLGC_RADIOBUTTON     0x0040
#define DLGC_WANTCHARS       0x0080
#define DLGC_STATIC          0x0100
#define DLGC_BUTTON          0x2000

/* Standard dialog button IDs */
#define IDOK                1
#define IDCANCEL            2
#define IDABORT             3
#define IDRETRY             4
#define IDIGNORE            5
#define IDYES               6
#define IDNO                7


typedef struct
{
    HWND16    hwnd;
    UINT16    message;
    WPARAM16  wParam;
    LPARAM    lParam WINE_PACKED;
    DWORD     time WINE_PACKED;
    POINT16   pt WINE_PACKED;
} MSG16, *LPMSG16;

typedef struct
{
    HWND32    hwnd;
    UINT32    message;
    WPARAM32  wParam;
    LPARAM    lParam;
    DWORD     time;
    POINT32   pt;
} MSG32, *LPMSG32;

DECL_WINELIB_TYPE(MSG);
DECL_WINELIB_TYPE(LPMSG);
	
  /* Raster operations */

#define R2_BLACK         1
#define R2_NOTMERGEPEN   2
#define R2_MASKNOTPEN    3
#define R2_NOTCOPYPEN    4
#define R2_MASKPENNOT    5
#define R2_NOT           6
#define R2_XORPEN        7
#define R2_NOTMASKPEN    8
#define R2_MASKPEN       9
#define R2_NOTXORPEN    10
#define R2_NOP          11
#define R2_MERGENOTPEN  12
#define R2_COPYPEN      13
#define R2_MERGEPENNOT  14
#define R2_MERGEPEN     15
#define R2_WHITE        16

#define SRCCOPY         0xcc0020
#define SRCPAINT        0xee0086
#define SRCAND          0x8800c6
#define SRCINVERT       0x660046
#define SRCERASE        0x440328
#define NOTSRCCOPY      0x330008
#define NOTSRCERASE     0x1100a6
#define MERGECOPY       0xc000ca
#define MERGEPAINT      0xbb0226
#define PATCOPY         0xf00021
#define PATPAINT        0xfb0a09
#define PATINVERT       0x5a0049
#define DSTINVERT       0x550009
#define BLACKNESS       0x000042
#define WHITENESS       0xff0062

  /* StretchBlt() modes */
#define BLACKONWHITE         1
#define WHITEONBLACK         2
#define COLORONCOLOR	     3

#define STRETCH_ANDSCANS     BLACKONWHITE
#define STRETCH_ORSCANS      WHITEONBLACK
#define STRETCH_DELETESCANS  COLORONCOLOR


  /* Colors */

typedef DWORD COLORREF;

#define RGB(r,g,b)          ((COLORREF)((r) | ((g) << 8) | ((b) << 16)))
#define PALETTERGB(r,g,b)   (0x02000000 | RGB(r,g,b))
#define PALETTEINDEX(i)     ((COLORREF)(0x01000000 | (WORD)(i)))

#define GetRValue(rgb)	    ((rgb) & 0xff)
#define GetGValue(rgb)      (((rgb) >> 8) & 0xff)
#define GetBValue(rgb)	    (((rgb) >> 16) & 0xff)

#define COLOR_SCROLLBAR		    0
#define COLOR_BACKGROUND	    1
#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_HIGHLIGHT		   13
#define COLOR_HIGHLIGHTTEXT	   14
#define COLOR_BTNFACE              15
#define COLOR_BTNSHADOW            16
#define COLOR_GRAYTEXT             17
#define COLOR_BTNTEXT		   18
#define COLOR_INACTIVECAPTIONTEXT  19
#define COLOR_BTNHIGHLIGHT         20

  /* WM_CTLCOLOR values */
#define CTLCOLOR_MSGBOX             0
#define CTLCOLOR_EDIT               1
#define CTLCOLOR_LISTBOX            2
#define CTLCOLOR_BTN                3
#define CTLCOLOR_DLG                4
#define CTLCOLOR_SCROLLBAR          5
#define CTLCOLOR_STATIC             6

  /* Bitmaps */

typedef struct
{
    INT16  bmType;
    INT16  bmWidth;
    INT16  bmHeight;
    INT16  bmWidthBytes;
    BYTE   bmPlanes;
    BYTE   bmBitsPixel;
    SEGPTR bmBits WINE_PACKED;
} BITMAP16, *LPBITMAP16;

typedef struct
{
    INT32  bmType;
    INT32  bmWidth;
    INT32  bmHeight;
    INT32  bmWidthBytes;
    WORD   bmPlanes;
    WORD   bmBitsPixel;
    LPVOID bmBits WINE_PACKED;
} BITMAP32, *LPBITMAP32;

DECL_WINELIB_TYPE(BITMAP);
DECL_WINELIB_TYPE(LPBITMAP);

  /* Brushes */

typedef struct
{ 
    UINT16     lbStyle;
    COLORREF   lbColor WINE_PACKED;
    INT16      lbHatch;
} LOGBRUSH16, *LPLOGBRUSH16;

typedef struct
{ 
    UINT32     lbStyle;
    COLORREF   lbColor;
    INT32      lbHatch;
} LOGBRUSH32, *LPLOGBRUSH32;

DECL_WINELIB_TYPE(LOGBRUSH);
DECL_WINELIB_TYPE(LPLOGBRUSH);

  /* Brush styles */
#define BS_SOLID	    0
#define BS_NULL		    1
#define BS_HOLLOW	    1
#define BS_HATCHED	    2
#define BS_PATTERN	    3
#define BS_INDEXED	    4
#define	BS_DIBPATTERN	    5

  /* Hatch styles */
#define HS_HORIZONTAL       0
#define HS_VERTICAL         1
#define HS_FDIAGONAL        2
#define HS_BDIAGONAL        3
#define HS_CROSS            4
#define HS_DIAGCROSS        5

  /* Fonts */

#define LF_FACESIZE     32
#define LF_FULLFACESIZE 64

typedef struct
{
    INT16  lfHeight;
    INT16  lfWidth;
    INT16  lfEscapement;
    INT16  lfOrientation;
    INT16  lfWeight;
    BYTE   lfItalic;
    BYTE   lfUnderline;
    BYTE   lfStrikeOut;
    BYTE   lfCharSet;
    BYTE   lfOutPrecision;
    BYTE   lfClipPrecision;
    BYTE   lfQuality;
    BYTE   lfPitchAndFamily;
    CHAR   lfFaceName[LF_FACESIZE] WINE_PACKED;
} LOGFONT16, *LPLOGFONT16;

typedef struct
{
    INT32  lfHeight;
    INT32  lfWidth;
    INT32  lfEscapement;
    INT32  lfOrientation;
    INT32  lfWeight;
    BYTE   lfItalic;
    BYTE   lfUnderline;
    BYTE   lfStrikeOut;
    BYTE   lfCharSet;
    BYTE   lfOutPrecision;
    BYTE   lfClipPrecision;
    BYTE   lfQuality;
    BYTE   lfPitchAndFamily;
    CHAR   lfFaceName[LF_FACESIZE];
} LOGFONT32A, *LPLOGFONT32A;

typedef struct
{
    INT32  lfHeight;
    INT32  lfWidth;
    INT32  lfEscapement;
    INT32  lfOrientation;
    INT32  lfWeight;
    BYTE   lfItalic;
    BYTE   lfUnderline;
    BYTE   lfStrikeOut;
    BYTE   lfCharSet;
    BYTE   lfOutPrecision;
    BYTE   lfClipPrecision;
    BYTE   lfQuality;
    BYTE   lfPitchAndFamily;
    WCHAR  lfFaceName[LF_FACESIZE];
} LOGFONT32W, *LPLOGFONT32W;

DECL_WINELIB_TYPE_AW(LOGFONT);
DECL_WINELIB_TYPE_AW(LPLOGFONT);

typedef struct
{
  LOGFONT16  elfLogFont;
  BYTE       elfFullName[LF_FULLFACESIZE] WINE_PACKED;
  BYTE       elfStyle[LF_FACESIZE] WINE_PACKED;
} ENUMLOGFONT16, *LPENUMLOGFONT16;

typedef struct
{
  LOGFONT32A elfLogFont;
  BYTE       elfFullName[LF_FULLFACESIZE] WINE_PACKED;
  BYTE       elfStyle[LF_FACESIZE] WINE_PACKED;
} ENUMLOGFONT32A, *LPENUMLOGFONT32A;

typedef struct
{
  LOGFONT32W elfLogFont;
  WCHAR      elfFullName[LF_FULLFACESIZE] WINE_PACKED;
  WCHAR      elfStyle[LF_FACESIZE] WINE_PACKED;
} ENUMLOGFONT32W, *LPENUMLOGFONT32W;

typedef struct
{
  LOGFONT16  elfLogFont;
  BYTE       elfFullName[LF_FULLFACESIZE] WINE_PACKED;
  BYTE       elfStyle[LF_FACESIZE] WINE_PACKED;
  BYTE       elfScript[LF_FACESIZE] WINE_PACKED;
} ENUMLOGFONTEX16, *LPENUMLOGFONTEX16;

typedef struct
{
  LOGFONT32A elfLogFont;
  BYTE       elfFullName[LF_FULLFACESIZE] WINE_PACKED;
  BYTE       elfStyle[LF_FACESIZE] WINE_PACKED;
  BYTE       elfScript[LF_FACESIZE] WINE_PACKED;
} ENUMLOGFONTEX32A,*LPENUMLOGFONTEX32A;

typedef struct
{
  LOGFONT32W elfLogFont;
  WCHAR      elfFullName[LF_FULLFACESIZE] WINE_PACKED;
  WCHAR      elfStyle[LF_FACESIZE] WINE_PACKED;
  WCHAR      elfScript[LF_FACESIZE] WINE_PACKED;
} ENUMLOGFONTEX32W,*LPENUMLOGFONTEX32W;

DECL_WINELIB_TYPE_AW(ENUMLOGFONT);
DECL_WINELIB_TYPE_AW(LPENUMLOGFONT);
DECL_WINELIB_TYPE_AW(LPENUMLOGFONTEX);

typedef struct
{
  DWORD fsUsb[4];
  DWORD fsCsb[2];
} FONTSIGNATURE,*LPFONTSIGNATURE;

typedef struct 
{
    INT16  txfHeight;
    INT16  txfWidth;
    INT16  txfEscapement;
    INT16  txfOrientation;
    INT16  txfWeight;
    CHAR   txfItalic;
    CHAR   txfUnderline;
    CHAR   txfStrikeOut;
    CHAR   txfOutPrecision;
    CHAR   txfClipPrecision;
    INT16  txfAccelerator WINE_PACKED;
    INT16  txfOverhang WINE_PACKED;
} TEXTXFORM16, *LPTEXTXFORM16;

typedef struct
{
    INT16 dfType;
    INT16 dfPoints;
    INT16 dfVertRes;
    INT16 dfHorizRes;
    INT16 dfAscent;
    INT16 dfInternalLeading;
    INT16 dfExternalLeading;
    CHAR  dfItalic;
    CHAR  dfUnderline;
    CHAR  dfStrikeOut;
    INT16 dfWeight;
    CHAR  dfCHARSet;
    INT16 dfPixWidth;
    INT16 dfPixHeight;
    CHAR  dfPitchAndFamily;
    INT16 dfAvgWidth;
    INT16 dfMaxWidth;
    CHAR  dfFirstCHAR;
    CHAR  dfLastCHAR;
    CHAR  dfDefaultCHAR;
    CHAR  dfBreakCHAR;
    INT16 dfWidthBytes;
    LONG  dfDevice;
    LONG  dfFace;
    LONG  dfBitsPointer;
    LONG  dfBitsOffset;
    CHAR  dfReserved;
    LONG  dfFlags;
    INT16 dfAspace;
    INT16 dfBspace;
    INT16 dfCspace;
    LONG  dfColorPointer;
    LONG  dfReserved1[4];
} FONTINFO16, *LPFONTINFO16;

  /* lfWeight values */
#define FW_DONTCARE	    0
#define FW_THIN 	    100
#define FW_EXTRALIGHT	    200
#define FW_ULTRALIGHT	    200
#define FW_LIGHT	    300
#define FW_NORMAL	    400
#define FW_REGULAR	    400
#define FW_MEDIUM	    500
#define FW_SEMIBOLD	    600
#define FW_DEMIBOLD	    600
#define FW_BOLD 	    700
#define FW_EXTRABOLD	    800
#define FW_ULTRABOLD	    800
#define FW_HEAVY	    900
#define FW_BLACK	    900

  /* lfCharSet values */
#define ANSI_CHARSET	      0
#define DEFAULT_CHARSET       1
#define SYMBOL_CHARSET	      2
#define SHIFTJIS_CHARSET      128
#define HANGEUL_CHARSET       129
#define CHINESEBIG5_CHARSET   136
#define OEM_CHARSET	      255

  /* lfOutPrecision values */
#define OUT_DEFAULT_PRECIS	0
#define OUT_STRING_PRECIS	1
#define OUT_CHARACTER_PRECIS	2
#define OUT_STROKE_PRECIS	3
#define OUT_TT_PRECIS		4
#define OUT_DEVICE_PRECIS	5
#define OUT_RASTER_PRECIS	6
#define OUT_TT_ONLY_PRECIS	7

  /* lfClipPrecision values */
#define CLIP_DEFAULT_PRECIS     0x00
#define CLIP_CHARACTER_PRECIS   0x01
#define CLIP_STROKE_PRECIS      0x02
#define CLIP_MASK		0x0F
#define CLIP_LH_ANGLES		0x10
#define CLIP_TT_ALWAYS		0x20
#define CLIP_EMBEDDED		0x80

  /* lfQuality values */
#define DEFAULT_QUALITY     0
#define DRAFT_QUALITY       1
#define PROOF_QUALITY       2

  /* lfPitchAndFamily pitch values */
#define DEFAULT_PITCH       0x00
#define FIXED_PITCH         0x01
#define VARIABLE_PITCH      0x02
#define FF_DONTCARE         0x00
#define FF_ROMAN            0x10
#define FF_SWISS            0x20
#define FF_MODERN           0x30
#define FF_SCRIPT           0x40
#define FF_DECORATIVE       0x50

typedef struct
{
    INT16     tmHeight;
    INT16     tmAscent;
    INT16     tmDescent;
    INT16     tmInternalLeading;
    INT16     tmExternalLeading;
    INT16     tmAveCharWidth;
    INT16     tmMaxCharWidth;
    INT16     tmWeight;
    BYTE      tmItalic;
    BYTE      tmUnderlined;
    BYTE      tmStruckOut;
    BYTE      tmFirstChar;
    BYTE      tmLastChar;
    BYTE      tmDefaultChar;
    BYTE      tmBreakChar;
    BYTE      tmPitchAndFamily;
    BYTE      tmCharSet;
    INT16     tmOverhang WINE_PACKED;
    INT16     tmDigitizedAspectX WINE_PACKED;
    INT16     tmDigitizedAspectY WINE_PACKED;
} TEXTMETRIC16, *LPTEXTMETRIC16;

typedef struct
{
    INT32     tmHeight;
    INT32     tmAscent;
    INT32     tmDescent;
    INT32     tmInternalLeading;
    INT32     tmExternalLeading;
    INT32     tmAveCharWidth;
    INT32     tmMaxCharWidth;
    INT32     tmWeight;
    INT32     tmOverhang;
    INT32     tmDigitizedAspectX;
    INT32     tmDigitizedAspectY;
    BYTE      tmFirstChar;
    BYTE      tmLastChar;
    BYTE      tmDefaultChar;
    BYTE      tmBreakChar;
    BYTE      tmItalic;
    BYTE      tmUnderlined;
    BYTE      tmStruckOut;
    BYTE      tmPitchAndFamily;
    BYTE      tmCharSet;
} TEXTMETRIC32A, *LPTEXTMETRIC32A;

typedef struct
{
    INT32     tmHeight;
    INT32     tmAscent;
    INT32     tmDescent;
    INT32     tmInternalLeading;
    INT32     tmExternalLeading;
    INT32     tmAveCharWidth;
    INT32     tmMaxCharWidth;
    INT32     tmWeight;
    INT32     tmOverhang;
    INT32     tmDigitizedAspectX;
    INT32     tmDigitizedAspectY;
    WCHAR     tmFirstChar;
    WCHAR     tmLastChar;
    WCHAR     tmDefaultChar;
    WCHAR     tmBreakChar;
    BYTE      tmItalic;
    BYTE      tmUnderlined;
    BYTE      tmStruckOut;
    BYTE      tmPitchAndFamily;
    BYTE      tmCharSet;
} TEXTMETRIC32W, *LPTEXTMETRIC32W;

DECL_WINELIB_TYPE_AW(TEXTMETRIC);
DECL_WINELIB_TYPE_AW(LPTEXTMETRIC);

/* ntmFlags field flags */
#define NTM_REGULAR     0x00000040L
#define NTM_BOLD        0x00000020L
#define NTM_ITALIC      0x00000001L

typedef struct
{
    INT16     tmHeight;
    INT16     tmAscent;
    INT16     tmDescent;
    INT16     tmInternalLeading;
    INT16     tmExternalLeading;
    INT16     tmAveCharWidth;
    INT16     tmMaxCharWidth;
    INT16     tmWeight;
    BYTE      tmItalic;
    BYTE      tmUnderlined;
    BYTE      tmStruckOut;
    BYTE      tmFirstChar;
    BYTE      tmLastChar;
    BYTE      tmDefaultChar;
    BYTE      tmBreakChar;
    BYTE      tmPitchAndFamily;
    BYTE      tmCharSet;
    INT16     tmOverhang WINE_PACKED;
    INT16     tmDigitizedAspectX WINE_PACKED;
    INT16     tmDigitizedAspectY WINE_PACKED;
    DWORD     ntmFlags;
    UINT16    ntmSizeEM;
    UINT16    ntmCellHeight;
    UINT16    ntmAvgWidth;
} NEWTEXTMETRIC16,*LPNEWTEXTMETRIC16;

typedef struct
{
    INT32     tmHeight;
    INT32     tmAscent;
    INT32     tmDescent;
    INT32     tmInternalLeading;
    INT32     tmExternalLeading;
    INT32     tmAveCharWidth;
    INT32     tmMaxCharWidth;
    INT32     tmWeight;
    INT32     tmOverhang;
    INT32     tmDigitizedAspectX;
    INT32     tmDigitizedAspectY;
    BYTE      tmFirstChar;
    BYTE      tmLastChar;
    BYTE      tmDefaultChar;
    BYTE      tmBreakChar;
    BYTE      tmItalic;
    BYTE      tmUnderlined;
    BYTE      tmStruckOut;
    BYTE      tmPitchAndFamily;
    BYTE      tmCharSet;
    DWORD     ntmFlags;
    UINT32    ntmSizeEM;
    UINT32    ntmCellHeight;
    UINT32    ntmAvgWidth;
} NEWTEXTMETRIC32A, *LPNEWTEXTMETRIC32A;

typedef struct
{
    INT32     tmHeight;
    INT32     tmAscent;
    INT32     tmDescent;
    INT32     tmInternalLeading;
    INT32     tmExternalLeading;
    INT32     tmAveCharWidth;
    INT32     tmMaxCharWidth;
    INT32     tmWeight;
    INT32     tmOverhang;
    INT32     tmDigitizedAspectX;
    INT32     tmDigitizedAspectY;
    WCHAR     tmFirstChar;
    WCHAR     tmLastChar;
    WCHAR     tmDefaultChar;
    WCHAR     tmBreakChar;
    BYTE      tmItalic;
    BYTE      tmUnderlined;
    BYTE      tmStruckOut;
    BYTE      tmPitchAndFamily;
    BYTE      tmCharSet;
    DWORD     ntmFlags;
    UINT32    ntmSizeEM;
    UINT32    ntmCellHeight;
    UINT32    ntmAvgWidth;
} NEWTEXTMETRIC32W, *LPNEWTEXTMETRIC32W;

DECL_WINELIB_TYPE_AW(NEWTEXTMETRIC);
DECL_WINELIB_TYPE_AW(LPNEWTEXTMETRIC);

typedef struct
{
    NEWTEXTMETRIC16	ntmetm;
    FONTSIGNATURE       ntmeFontSignature;
} NEWTEXTMETRICEX16,*LPNEWTEXTMETRICEX16;

typedef struct
{
    NEWTEXTMETRIC32A	ntmetm;
    FONTSIGNATURE       ntmeFontSignature;
} NEWTEXTMETRICEX32A,*LPNEWTEXTMETRICEX32A;

typedef struct
{
    NEWTEXTMETRIC32W	ntmetm;
    FONTSIGNATURE       ntmeFontSignature;
} NEWTEXTMETRICEX32W,*LPNEWTEXTMETRICEX32W;

DECL_WINELIB_TYPE_AW(NEWTEXTMETRICEX);
DECL_WINELIB_TYPE_AW(LPNEWTEXTMETRICEX);


typedef INT16 (*FONTENUMPROC16)(SEGPTR,SEGPTR,UINT16,LPARAM);
typedef INT32 (*FONTENUMPROC32A)(LPENUMLOGFONT32A,LPNEWTEXTMETRIC32A,UINT32,LPARAM);
typedef INT32 (*FONTENUMPROC32W)(LPENUMLOGFONT32W,LPNEWTEXTMETRIC32W,UINT32,LPARAM);
DECL_WINELIB_TYPE_AW(FONTENUMPROC);

typedef INT16 (*FONTENUMPROCEX16)(SEGPTR,SEGPTR,UINT16,LPARAM);
typedef INT32 (*FONTENUMPROCEX32A)(LPENUMLOGFONTEX32A,LPNEWTEXTMETRICEX32A,UINT32,LPARAM);
typedef INT32 (*FONTENUMPROCEX32W)(LPENUMLOGFONTEX32W,LPNEWTEXTMETRICEX32W,UINT32,LPARAM);
DECL_WINELIB_TYPE_AW(FONTENUMPROCEX);

  /* tmPitchAndFamily values */
#define TMPF_FIXED_PITCH    1
#define TMPF_VECTOR	    2
#define TMPF_TRUETYPE	    4
#define TMPF_DEVICE	    8

  /* Text alignment */
#define TA_NOUPDATECP       0x00
#define TA_UPDATECP         0x01
#define TA_LEFT             0x00
#define TA_RIGHT            0x02
#define TA_CENTER           0x06
#define TA_TOP              0x00
#define TA_BOTTOM           0x08
#define TA_BASELINE         0x18

  /* ExtTextOut() parameters */
#define ETO_GRAYED          0x01
#define ETO_OPAQUE          0x02
#define ETO_CLIPPED         0x04

typedef struct
{
    UINT16	gmBlackBoxX;
    UINT16	gmBlackBoxY;
    POINT16	gmptGlyphOrigin;
    INT16	gmCellIncX;
    INT16	gmCellIncY;
} GLYPHMETRICS16, *LPGLYPHMETRICS16;

typedef struct
{
    UINT32	gmBlackBoxX;
    UINT32	gmBlackBoxY;
    POINT32	gmptGlyphOrigin;
    INT16	gmCellIncX;
    INT16	gmCellIncY;
} GLYPHMETRICS32, *LPGLYPHMETRICS32;

DECL_WINELIB_TYPE(GLYPHMETRICS);
DECL_WINELIB_TYPE(LPGLYPHMETRICS);

#define GGO_METRICS         0
#define GGO_BITMAP          1
#define GGO_NATIVE          2

typedef struct
{
    UINT16  fract;
    INT16   value;
} FIXED;

typedef struct
{
     FIXED  eM11;
     FIXED  eM12;
     FIXED  eM21;
     FIXED  eM22;
} MAT2, *LPMAT2;

  /* for GetCharABCWidths() */
typedef struct
{
    INT16   abcA;
    UINT16  abcB;
    INT16   abcC;
} ABC16, *LPABC16;

typedef struct
{
    INT32   abcA;
    UINT32  abcB;
    INT32   abcC;
} ABC32, *LPABC32;

DECL_WINELIB_TYPE(ABC);
DECL_WINELIB_TYPE(LPABC);

  /* Rasterizer status */
typedef struct
{
    INT16 nSize;
    INT16 wFlags;
    INT16 nLanguageID;
} RASTERIZER_STATUS, *LPRASTERIZER_STATUS;

#define TT_AVAILABLE        0x0001
#define TT_ENABLED          0x0002

/* Get/SetSystemPaletteUse() values */
#define SYSPAL_STATIC   1
#define SYSPAL_NOSTATIC 2

typedef struct tagPALETTEENTRY
{
	BYTE peRed, peGreen, peBlue, peFlags;
} PALETTEENTRY, *LPPALETTEENTRY;

/* Logical palette entry flags */
#define PC_RESERVED     0x01
#define PC_EXPLICIT     0x02
#define PC_NOCOLLAPSE   0x04

typedef struct
{ 
    WORD           palVersion;
    WORD           palNumEntries;
    PALETTEENTRY   palPalEntry[1] WINE_PACKED;
} LOGPALETTE, *LPLOGPALETTE;

  /* Pens */

typedef struct
{
    UINT16   lopnStyle; 
    POINT16  lopnWidth WINE_PACKED;
    COLORREF lopnColor WINE_PACKED;
} LOGPEN16, *LPLOGPEN16;

typedef struct
{
    UINT32   lopnStyle; 
    POINT32  lopnWidth WINE_PACKED;
    COLORREF lopnColor WINE_PACKED;
} LOGPEN32, *LPLOGPEN32;

DECL_WINELIB_TYPE(LOGPEN);
DECL_WINELIB_TYPE(LPLOGPEN);

#define PS_SOLID	  0
#define PS_DASH           1
#define PS_DOT            2
#define PS_DASHDOT        3
#define PS_DASHDOTDOT     4
#define PS_NULL 	  5
#define PS_INSIDEFRAME 	  6

  /* Regions */

#define ERROR             0
#define NULLREGION        1
#define SIMPLEREGION      2
#define COMPLEXREGION     3

#define RGN_AND           1
#define RGN_OR            2
#define RGN_XOR           3
#define RGN_DIFF          4
#define RGN_COPY          5

  /* Device contexts */

/* GetDCEx flags */
#define DCX_WINDOW           0x00000001
#define DCX_CACHE            0x00000002
#define DCX_CLIPCHILDREN     0x00000008
#define DCX_CLIPSIBLINGS     0x00000010
#define DCX_PARENTCLIP       0x00000020
#define DCX_EXCLUDERGN       0x00000040
#define DCX_INTERSECTRGN     0x00000080
#define DCX_LOCKWINDOWUPDATE 0x00000400
#define DCX_USESTYLE         0x00010000

  /* Polygon modes */
#define ALTERNATE         1
#define WINDING           2

  /* Background modes */
#ifdef TRANSPARENT  /*Apparently some broken svr4 includes define TRANSPARENT*/
#undef TRANSPARENT
#endif
#define TRANSPARENT       1
#define OPAQUE            2

  /* Map modes */
#define MM_TEXT		  1
#define MM_LOMETRIC	  2
#define MM_HIMETRIC	  3
#define MM_LOENGLISH	  4
#define MM_HIENGLISH	  5
#define MM_TWIPS	  6
#define MM_ISOTROPIC	  7
#define MM_ANISOTROPIC	  8

  /* Coordinate modes */
#define ABSOLUTE          1
#define RELATIVE          2

  /* Flood fill modes */
#define FLOODFILLBORDER   0
#define FLOODFILLSURFACE  1

  /* Device parameters for GetDeviceCaps() */
#define DRIVERVERSION     0
#define TECHNOLOGY        2
#define HORZSIZE          4
#define VERTSIZE          6
#define HORZRES           8
#define VERTRES           10
#define BITSPIXEL         12
#define PLANES            14
#define NUMBRUSHES        16
#define NUMPENS           18
#define NUMMARKERS        20
#define NUMFONTS          22
#define NUMCOLORS         24
#define PDEVICESIZE       26
#define CURVECAPS         28
#define LINECAPS          30
#define POLYGONALCAPS     32
#define TEXTCAPS          34
#define CLIPCAPS          36
#define RASTERCAPS        38
#define ASPECTX           40
#define ASPECTY           42
#define ASPECTXY          44
#define LOGPIXELSX        88
#define LOGPIXELSY        90
#define SIZEPALETTE       104
#define NUMRESERVED       106
#define COLORRES          108

/* TECHNOLOGY */
#define DT_PLOTTER        0
#define DT_RASDISPLAY     1
#define DT_RASPRINTER     2
#define DT_RASCAMERA      3
#define DT_CHARSTREAM     4
#define DT_METAFILE       5
#define DT_DISPFILE       6

/* CURVECAPS */
#define CC_NONE           0x0000
#define CC_CIRCLES        0x0001
#define CC_PIE            0x0002
#define CC_CHORD          0x0004
#define CC_ELLIPSES       0x0008
#define CC_WIDE           0x0010
#define CC_STYLED         0x0020
#define CC_WIDESTYLED     0x0040
#define CC_INTERIORS      0x0080
#define CC_ROUNDRECT      0x0100

/* LINECAPS */
#define LC_NONE           0x0000
#define LC_POLYLINE       0x0002
#define LC_MARKER         0x0004
#define LC_POLYMARKER     0x0008
#define LC_WIDE           0x0010
#define LC_STYLED         0x0020
#define LC_WIDESTYLED     0x0040
#define LC_INTERIORS      0x0080

/* POLYGONALCAPS */
#define PC_NONE           0x0000
#define PC_POLYGON        0x0001
#define PC_RECTANGLE      0x0002
#define PC_WINDPOLYGON    0x0004
#define PC_SCANLINE       0x0008
#define PC_WIDE           0x0010
#define PC_STYLED         0x0020
#define PC_WIDESTYLED     0x0040
#define PC_INTERIORS      0x0080

/* TEXTCAPS */
#define TC_OP_CHARACTER   0x0001
#define TC_OP_STROKE      0x0002
#define TC_CP_STROKE      0x0004
#define TC_CR_90          0x0008
#define TC_CR_ANY         0x0010
#define TC_SF_X_YINDEP    0x0020
#define TC_SA_DOUBLE      0x0040
#define TC_SA_INTEGER     0x0080
#define TC_SA_CONTIN      0x0100
#define TC_EA_DOUBLE      0x0200
#define TC_IA_ABLE        0x0400
#define TC_UA_ABLE        0x0800
#define TC_SO_ABLE        0x1000
#define TC_RA_ABLE        0x2000
#define TC_VA_ABLE        0x4000
#define TC_RESERVED       0x8000

/* CLIPCAPS */
#define CP_NONE           0x0000
#define CP_RECTANGLE      0x0001
#define CP_REGION         0x0002

/* RASTERCAPS */
#define RC_NONE           0x0000
#define RC_BITBLT         0x0001
#define RC_BANDING        0x0002
#define RC_SCALING        0x0004
#define RC_BITMAP64       0x0008
#define RC_GDI20_OUTPUT   0x0010
#define RC_GDI20_STATE    0x0020
#define RC_SAVEBITMAP     0x0040
#define RC_DI_BITMAP      0x0080
#define RC_PALETTE        0x0100
#define RC_DIBTODEV       0x0200
#define RC_BIGFONT        0x0400
#define RC_STRETCHBLT     0x0800
#define RC_FLOODFILL      0x1000
#define RC_STRETCHDIB     0x2000
#define RC_OP_DX_OUTPUT   0x4000
#define RC_DEVBITS        0x8000

  /* 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_CMETRICS           75

  /* Device-independent bitmaps */

typedef struct { BYTE rgbBlue, rgbGreen, rgbRed, rgbReserved; } RGBQUAD;
typedef struct { BYTE rgbtBlue, rgbtGreen, rgbtRed; } RGBTRIPLE;

typedef struct
{
    UINT16  bfType;
    DWORD   bfSize WINE_PACKED;
    UINT16  bfReserved1 WINE_PACKED;
    UINT16  bfReserved2 WINE_PACKED;
    DWORD   bfOffBits WINE_PACKED;
} BITMAPFILEHEADER;

typedef struct
{
    DWORD 	biSize;
    LONG  	biWidth;
    LONG  	biHeight;
    WORD 	biPlanes;
    WORD 	biBitCount;
    DWORD 	biCompression;
    DWORD 	biSizeImage;
    LONG  	biXPelsPerMeter;
    LONG  	biYPelsPerMeter;
    DWORD 	biClrUsed;
    DWORD 	biClrImportant;
} BITMAPINFOHEADER, *LPBITMAPINFOHEADER;

  /* biCompression */
#define BI_RGB           0
#define BI_RLE8          1
#define BI_RLE4          2

typedef struct {
	BITMAPINFOHEADER bmiHeader;
	RGBQUAD	bmiColors[1];
} BITMAPINFO;
typedef BITMAPINFO *LPBITMAPINFO;
typedef BITMAPINFO *NPBITMAPINFO;
typedef BITMAPINFO *PBITMAPINFO;

typedef struct
{
    DWORD   bcSize;
    UINT16  bcWidth;
    UINT16  bcHeight;
    UINT16  bcPlanes;
    UINT16  bcBitCount;
} BITMAPCOREHEADER;

typedef struct
{
    BITMAPCOREHEADER bmciHeader;
    RGBTRIPLE        bmciColors[1];
} BITMAPCOREINFO, *LPBITMAPCOREINFO;

#define DIB_RGB_COLORS   0
#define DIB_PAL_COLORS   1
#define CBM_INIT         4


  /* Cursors / Icons */

typedef struct
{
    POINT16 ptHotSpot;
    WORD    nWidth;
    WORD    nHeight;
    WORD    nWidthBytes;
    BYTE    bPlanes;
    BYTE    bBitsPerPixel;
} CURSORICONINFO;



typedef struct {
	BYTE i;  /* much more .... */
} KANJISTRUCT;
typedef KANJISTRUCT *LPKANJISTRUCT;
typedef KANJISTRUCT *NPKANJISTRUCT;
typedef KANJISTRUCT *PKANJISTRUCT;

#define OFS_MAXPATHNAME 128
typedef struct
{
    BYTE cBytes;
    BYTE fFixedDisk;
    WORD nErrCode;
    BYTE reserved[4];
    BYTE szPathName[OFS_MAXPATHNAME];
} OFSTRUCT, *LPOFSTRUCT;

#define OF_READ               0x0000
#define OF_WRITE              0x0001
#define OF_READWRITE          0x0002
#define OF_SHARE_COMPAT       0x0000
#define OF_SHARE_EXCLUSIVE    0x0010
#define OF_SHARE_DENY_WRITE   0x0020
#define OF_SHARE_DENY_READ    0x0030
#define OF_SHARE_DENY_NONE    0x0040
#define OF_PARSE              0x0100
#define OF_DELETE             0x0200
#define OF_VERIFY             0x0400   /* Used with OF_REOPEN */
#define OF_SEARCH             0x0400   /* Used without OF_REOPEN */
#define OF_CANCEL             0x0800
#define OF_CREATE             0x1000
#define OF_PROMPT             0x2000
#define OF_EXIST              0x4000
#define OF_REOPEN             0x8000

/* SetErrorMode values */
#define SEM_FAILCRITICALERRORS      0x0001
#define SEM_NOGPFAULTERRORBOX       0x0002
#define SEM_NOALIGNMENTFAULTEXCEPT  0x0004
#define SEM_NOOPENFILEERRORBOX      0x8000

/* GetTempFileName() Flags */
#define TF_FORCEDRIVE	        0x80

#define DRIVE_CANNOTDETERMINE      0
#define DRIVE_DOESNOTEXIST         1
#define DRIVE_REMOVABLE            2
#define DRIVE_FIXED                3
#define DRIVE_REMOTE               4
/* Win32 additions */
#define DRIVE_CDROM                5
#define DRIVE_RAMDISK              6

#define HFILE_ERROR16   ((HFILE16)-1)
#define HFILE_ERROR32   ((HFILE32)-1)
#define HFILE_ERROR     WINELIB_NAME(HFILE_ERROR)

#define DDL_READWRITE	0x0000
#define DDL_READONLY	0x0001
#define DDL_HIDDEN	0x0002
#define DDL_SYSTEM	0x0004
#define DDL_DIRECTORY	0x0010
#define DDL_ARCHIVE	0x0020

#define DDL_POSTMSGS	0x2000
#define DDL_DRIVES	0x4000
#define DDL_EXCLUSIVE	0x8000

/* The security attributes structure 
 */
typedef struct
{
    DWORD   nLength;
    LPVOID  lpSecurityDescriptor;
    BOOL32  bInheritHandle;
} SECURITY_ATTRIBUTES, *LPSECURITY_ATTRIBUTES;

/* 64 bit number of 100 nanoseconds intervals since January 1, 1601 */
/* FIXME: currently dwLowDateTime is equivalent to the UNIX time(),
 * and dwHighDateTime 0
 */
typedef struct
{
  INT32  dwLowDateTime;
  INT32  dwHighDateTime;
} FILETIME, *LPFILETIME;

/* Find* structures */
typedef struct
{
    DWORD     dwFileAttributes;
    FILETIME  ftCreationTime;
    FILETIME  ftLastAccessTime;
    FILETIME  ftLastWriteTime;
    DWORD     nFileSizeHigh;
    DWORD     nFileSizeLow;
    DWORD     dwReserved0;
    DWORD     dwReserved1;
    CHAR      cFileName[260];
    CHAR      cAlternateFileName[14];
} WIN32_FIND_DATA32A, *LPWIN32_FIND_DATA32A;

typedef struct
{
    DWORD     dwFileAttributes;
    FILETIME  ftCreationTime;
    FILETIME  ftLastAccessTime;
    FILETIME  ftLastWriteTime;
    DWORD     nFileSizeHigh;
    DWORD     nFileSizeLow;
    DWORD     dwReserved0;
    DWORD     dwReserved1;
    WCHAR     cFileName[260];
    WCHAR     cAlternateFileName[14];
} WIN32_FIND_DATA32W, *LPWIN32_FIND_DATA32W;

DECL_WINELIB_TYPE_AW(WIN32_FIND_DATA);
DECL_WINELIB_TYPE_AW(LPWIN32_FIND_DATA);

#define INVALID_HANDLE_VALUE16  ((HANDLE16) -1)
#define INVALID_HANDLE_VALUE32  ((HANDLE32) -1)
#define INVALID_HANDLE_VALUE WINELIB_NAME(INVALID_HANDLE_VALUE)

/* comm */

#define CBR_110	0xFF10
#define CBR_300	0xFF11
#define CBR_600	0xFF12
#define CBR_1200	0xFF13
#define CBR_2400	0xFF14
#define CBR_4800	0xFF15
#define CBR_9600	0xFF16
#define CBR_14400	0xFF17
#define CBR_19200	0xFF18
#define CBR_38400	0xFF1B
#define CBR_56000	0xFF1F
#define CBR_128000	0xFF23
#define CBR_256000	0xFF27

#define NOPARITY	0
#define ODDPARITY	1
#define EVENPARITY	2
#define MARKPARITY	3
#define SPACEPARITY	4
#define ONESTOPBIT	0
#define ONE5STOPBITS	1
#define TWOSTOPBITS	2

#define IGNORE		0
#define INFINITE16      0xFFFF
#define INFINITE32      0xFFFFFFFF
#define INFINITE WINELIB_NAME(INFINITE)

#define CE_RXOVER	0x0001
#define CE_OVERRUN	0x0002
#define CE_RXPARITY	0x0004
#define CE_FRAME	0x0008
#define CE_BREAK	0x0010
#define CE_CTSTO	0x0020
#define CE_DSRTO	0x0040
#define CE_RLSDTO	0x0080
#define CE_TXFULL	0x0100
#define CE_PTO		0x0200
#define CE_IOE		0x0400
#define CE_DNS		0x0800
#define CE_OOP		0x1000
#define CE_MODE	0x8000

#define IE_BADID	-1
#define IE_OPEN	-2
#define IE_NOPEN	-3
#define IE_MEMORY	-4
#define IE_DEFAULT	-5
#define IE_HARDWARE	-10
#define IE_BYTESIZE	-11
#define IE_BAUDRATE	-12

#define EV_RXCHAR	0x0001
#define EV_RXFLAG	0x0002
#define EV_TXEMPTY	0x0004
#define EV_CTS		0x0008
#define EV_DSR		0x0010
#define EV_RLSD	0x0020
#define EV_BREAK	0x0040
#define EV_ERR		0x0080
#define EV_RING	0x0100
#define EV_PERR	0x0200
#define EV_CTSS	0x0400
#define EV_DSRS	0x0800
#define EV_RLSDS	0x1000
#define EV_RINGTE	0x2000
#define EV_RingTe	EV_RINGTE

#define SETXOFF	1
#define SETXON		2
#define SETRTS		3
#define CLRRTS		4
#define SETDTR		5
#define CLRDTR		6
#define RESETDEV	7
/* win16 only */
#define GETMAXLPT	8
#define GETMAXCOM	9
/* win32 only */
#define SETBREAK	8
#define CLRBREAK	9

#define GETBASEIRQ	10

#define CN_RECEIVE	0x0001
#define CN_TRANSMIT	0x0002
#define CN_EVENT	0x0004

typedef struct tagDCB16
{
    BYTE   Id;
    UINT16 BaudRate WINE_PACKED;
    BYTE   ByteSize;
    BYTE   Parity;
    BYTE   StopBits;
    UINT16 RlsTimeout;
    UINT16 CtsTimeout;
    UINT16 DsrTimeout;

    UINT16 fBinary        :1;
    UINT16 fRtsDisable    :1;
    UINT16 fParity        :1;
    UINT16 fOutxCtsFlow   :1;
    UINT16 fOutxDsrFlow   :1;
    UINT16 fDummy         :2;
    UINT16 fDtrDisable    :1;

    UINT16 fOutX          :1;
    UINT16 fInX           :1;
    UINT16 fPeChar        :1;
    UINT16 fNull          :1;
    UINT16 fChEvt         :1;
    UINT16 fDtrflow       :1;
    UINT16 fRtsflow       :1;
    UINT16 fDummy2        :1;

    CHAR   XonChar;
    CHAR   XoffChar;
    UINT16 XonLim;
    UINT16 XoffLim;
    CHAR   PeChar;
    CHAR   EofChar;
    CHAR   EvtChar;
    UINT16 TxDelay WINE_PACKED;
} DCB16, *LPDCB16;

typedef struct tagDCB32
{
    DWORD DCBlength;
    DWORD BaudRate;
    DWORD fBinary		:1;
    DWORD fParity		:1;
    DWORD fOutxCtsFlow		:1;
    DWORD fOutxDsrFlow		:1;
    DWORD fDtrControl		:2;
    DWORD fDsrSensitivity	:1;
    DWORD fTXContinueOnXoff	:1;
    DWORD fOutX			:1;
    DWORD fInX			:1;
    DWORD fErrorChar		:1;
    DWORD fNull			:1;
    DWORD fRtsControl		:2;
    DWORD fAbortOnError		:1;
    DWORD fDummy2		:17;
    WORD wReserved;
    WORD XonLim;
    WORD XoffLim;
    BYTE ByteSize;
    BYTE Parity;
    BYTE StopBits;
    char XonChar;
    char XoffChar;
    char ErrorChar;
    char EofChar;
    char EvtChar;
} DCB32, *LPDCB32;

DECL_WINELIB_TYPE(DCB);
DECL_WINELIB_TYPE(LPDCB);

#define	RTS_CONTROL_DISABLE	0
#define	RTS_CONTROL_ENABLE	1
#define	RTS_CONTROL_HANDSHAKE	2
#define	RTS_CONTROL_TOGGLE	3

#define	DTR_CONTROL_DISABLE	0
#define	DTR_CONTROL_ENABLE	1
#define	DTR_CONTROL_HANDSHAKE	2

typedef struct tagCOMMTIMEOUTS {
	DWORD	ReadIntervalTimeout;
	DWORD	ReadTotalTimeoutMultiplier;
	DWORD	ReadTotalTimeoutConstant;
	DWORD	WriteTotalTimeoutMultiplier;
	DWORD	WriteTotalTimeoutConstant;
} COMMTIMEOUTS,*LPCOMMTIMEOUTS;

typedef struct tagCOMSTAT
{
    BYTE   status;
    UINT16 cbInQue WINE_PACKED;
    UINT16 cbOutQue WINE_PACKED;
} COMSTAT,*LPCOMSTAT;

#define CSTF_CTSHOLD	0x01
#define CSTF_DSRHOLD	0x02
#define CSTF_RLSDHOLD	0x04
#define CSTF_XOFFHOLD	0x08
#define CSTF_XOFFSENT	0x10
#define CSTF_EOF	0x20
#define CSTF_TXIM	0x40

/* SystemParametersInfo */

#define SPI_GETBEEP               1
#define SPI_SETBEEP               2
#define SPI_GETMOUSE              3
#define SPI_SETMOUSE              4
#define SPI_GETBORDER             5
#define SPI_SETBORDER             6
#define SPI_GETKEYBOARDSPEED      10
#define SPI_SETKEYBOARDSPEED      11
#define SPI_LANGDRIVER            12
#define SPI_ICONHORIZONTALSPACING 13
#define SPI_GETSCREENSAVETIMEOUT  14
#define SPI_SETSCREENSAVETIMEOUT  15
#define SPI_GETSCREENSAVEACTIVE   16
#define SPI_SETSCREENSAVEACTIVE   17
#define SPI_GETGRIDGRANULARITY    18
#define SPI_SETGRIDGRANULARITY    19
#define SPI_SETDESKWALLPAPER      20
#define SPI_SETDESKPATTERN        21
#define SPI_GETKEYBOARDDELAY      22
#define SPI_SETKEYBOARDDELAY      23
#define SPI_ICONVERTICALSPACING   24
#define SPI_GETICONTITLEWRAP      25
#define SPI_SETICONTITLEWRAP      26
#define SPI_GETMENUDROPALIGNMENT  27
#define SPI_SETMENUDROPALIGNMENT  28
#define SPI_SETDOUBLECLKWIDTH     29
#define SPI_SETDOUBLECLKHEIGHT    30
#define SPI_GETICONTITLELOGFONT   31
#define SPI_SETDOUBLECLICKTIME    32
#define SPI_SETMOUSEBUTTONSWAP    33
#define SPI_SETICONTITLELOGFONT   34
#define SPI_GETFASTTASKSWITCH     35
#define SPI_SETFASTTASKSWITCH     36
#define SPI_SETDRAGFULLWINDOWS    37
#define SPI_GETDRAGFULLWINDOWS    38
#define SPI_GETNONCLIENTMETRICS   41
#define SPI_SETNONCLIENTMETRICS   42
#define SPI_GETMINIMIZEDMETRICS   43
#define SPI_SETMINIMIZEDMETRICS   44
#define SPI_GETICONMETRICS        45
#define SPI_SETICONMETRICS        46
#define SPI_SETWORKAREA           47
#define SPI_GETWORKAREA           48
#define SPI_SETPENWINDOWS         49
#define SPI_GETFILTERKEYS         50
#define SPI_SETFILTERKEYS         51
#define SPI_GETTOGGLEKEYS         52
#define SPI_SETTOGGLEKEYS         53
#define SPI_GETMOUSEKEYS          54
#define SPI_SETMOUSEKEYS          55
#define SPI_GETSHOWSOUNDS         56
#define SPI_SETSHOWSOUNDS         57
#define SPI_GETSTICKYKEYS         58
#define SPI_SETSTICKYKEYS         59
#define SPI_GETACCESSTIMEOUT      60
#define SPI_SETACCESSTIMEOUT      61
#define SPI_GETSERIALKEYS         62
#define SPI_SETSERIALKEYS         63
#define SPI_GETSOUNDSENTRY        64
#define SPI_SETSOUNDSENTRY        65
#define SPI_GETHIGHCONTRAST       66
#define SPI_SETHIGHCONTRAST       67
#define SPI_GETKEYBOARDPREF       68
#define SPI_SETKEYBOARDPREF       69
#define SPI_GETSCREENREADER       70
#define SPI_SETSCREENREADER       71
#define SPI_GETANIMATION          72
#define SPI_SETANIMATION          73
#define SPI_GETFONTSMOOTHING      74
#define SPI_SETFONTSMOOTHING      75
#define SPI_SETDRAGWIDTH          76
#define SPI_SETDRAGHEIGHT         77
#define SPI_SETHANDHELD           78
#define SPI_GETLOWPOWERTIMEOUT    79
#define SPI_GETPOWEROFFTIMEOUT    80
#define SPI_SETLOWPOWERTIMEOUT    81
#define SPI_SETPOWEROFFTIMEOUT    82
#define SPI_GETLOWPOWERACTIVE     83
#define SPI_GETPOWEROFFACTIVE     84
#define SPI_SETLOWPOWERACTIVE     85
#define SPI_SETPOWEROFFACTIVE     86
#define SPI_SETCURSORS            87
#define SPI_SETICONS              88
#define SPI_GETDEFAULTINPUTLANG   89
#define SPI_SETDEFAULTINPUTLANG   90
#define SPI_SETLANGTOGGLE         91
#define SPI_GETWINDOWSEXTENSION   92
#define SPI_SETMOUSETRAILS        93
#define SPI_GETMOUSETRAILS        94
#define SPI_SCREENSAVERRUNNING    97

/* SystemParametersInfo flags */

#define SPIF_UPDATEINIFILE		1
#define SPIF_SENDWININICHANGE		2

/* GetFreeSystemResources() parameters */

#define GFSR_SYSTEMRESOURCES   0x0000
#define GFSR_GDIRESOURCES      0x0001
#define GFSR_USERRESOURCES     0x0002

/* GetWinFlags */

#define WF_PMODE 	0x0001
#define WF_CPU286 	0x0002
#define	WF_CPU386	0x0004
#define	WF_CPU486 	0x0008
#define	WF_STANDARD	0x0010
#define	WF_WIN286 	0x0010
#define	WF_ENHANCED	0x0020
#define	WF_WIN386	0x0020
#define	WF_CPU086	0x0040
#define	WF_CPU186	0x0080
#define	WF_LARGEFRAME	0x0100
#define	WF_SMALLFRAME	0x0200
#define	WF_80x87	0x0400
#define	WF_PAGING	0x0800
#define	WF_WIN32WOW     0x4000	/* undoc */
#define	WF_WLO          0x8000

#define MAKEINTRESOURCE(i) (SEGPTR)((DWORD)((WORD)(i)))

/* Predefined resource types */
#define RT_CURSOR	    MAKEINTRESOURCE(1)
#define RT_BITMAP	    MAKEINTRESOURCE(2)
#define RT_ICON 	    MAKEINTRESOURCE(3)
#define RT_MENU 	    MAKEINTRESOURCE(4)
#define RT_DIALOG	    MAKEINTRESOURCE(5)
#define RT_STRING	    MAKEINTRESOURCE(6)
#define RT_FONTDIR	    MAKEINTRESOURCE(7)
#define RT_FONT 	    MAKEINTRESOURCE(8)
#define RT_ACCELERATOR	    MAKEINTRESOURCE(9)
#define RT_RCDATA	    MAKEINTRESOURCE(10)
#define RT_MESSAGELIST      MAKEINTRESOURCE(11)
#define RT_GROUP_CURSOR     MAKEINTRESOURCE(12)
#define RT_GROUP_ICON	    MAKEINTRESOURCE(14)

/* Predefined resources */
#define IDI_APPLICATION  MAKEINTRESOURCE(32512)
#define IDI_HAND         MAKEINTRESOURCE(32513)
#define IDI_QUESTION     MAKEINTRESOURCE(32514)
#define IDI_EXCLAMATION  MAKEINTRESOURCE(32515)
#define IDI_ASTERISK     MAKEINTRESOURCE(32516)

#define IDC_BUMMER	 MAKEINTRESOURCE(100)
#define IDC_ARROW        MAKEINTRESOURCE(32512)
#define IDC_IBEAM        MAKEINTRESOURCE(32513)
#define IDC_WAIT         MAKEINTRESOURCE(32514)
#define IDC_CROSS        MAKEINTRESOURCE(32515)
#define IDC_UPARROW      MAKEINTRESOURCE(32516)
#define IDC_SIZE         MAKEINTRESOURCE(32640)
#define IDC_ICON         MAKEINTRESOURCE(32641)
#define IDC_SIZENWSE     MAKEINTRESOURCE(32642)
#define IDC_SIZENESW     MAKEINTRESOURCE(32643)
#define IDC_SIZEWE       MAKEINTRESOURCE(32644)
#define IDC_SIZENS       MAKEINTRESOURCE(32645)

/* OEM Resource Ordinal Numbers */
#define OBM_CLOSE           32754
#define OBM_UPARROW         32753
#define OBM_DNARROW         32752
#define OBM_RGARROW         32751
#define OBM_LFARROW         32750
#define OBM_REDUCE          32749
#define OBM_ZOOM            32748
#define OBM_RESTORE         32747
#define OBM_REDUCED         32746
#define OBM_ZOOMD           32745
#define OBM_RESTORED        32744
#define OBM_UPARROWD        32743
#define OBM_DNARROWD        32742
#define OBM_RGARROWD        32741
#define OBM_LFARROWD        32740
#define OBM_MNARROW         32739
#define OBM_COMBO           32738
#define OBM_UPARROWI        32737
#define OBM_DNARROWI        32736
#define OBM_RGARROWI        32735
#define OBM_LFARROWI        32734

#define OBM_FOLDER          32733
#define OBM_FOLDER2         32732
#define OBM_FLOPPY          32731
#define OBM_HDISK           32730
#define OBM_CDROM           32729
#define OBM_TRTYPE          32728

#define OBM_OLD_CLOSE       32767
#define OBM_SIZE            32766
#define OBM_OLD_UPARROW     32765
#define OBM_OLD_DNARROW     32764
#define OBM_OLD_RGARROW     32763
#define OBM_OLD_LFARROW     32762
#define OBM_BTSIZE          32761
#define OBM_CHECK           32760
#define OBM_CHECKBOXES      32759
#define OBM_BTNCORNERS      32758
#define OBM_OLD_REDUCE      32757
#define OBM_OLD_ZOOM        32756
#define OBM_OLD_RESTORE     32755

#define OCR_BUMMER	    100
#define OCR_DRAGOBJECT	    101

#define OCR_NORMAL          32512
#define OCR_IBEAM           32513
#define OCR_WAIT            32514
#define OCR_CROSS           32515
#define OCR_UP              32516
#define OCR_SIZE            32640
#define OCR_ICON            32641
#define OCR_SIZENWSE        32642
#define OCR_SIZENESW        32643
#define OCR_SIZEWE          32644
#define OCR_SIZENS          32645
#define OCR_SIZEALL         32646
#define OCR_ICOCUR          32647

#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

  /* Stock GDI objects for GetStockObject() */

#define WHITE_BRUSH	    0
#define LTGRAY_BRUSH	    1
#define GRAY_BRUSH	    2
#define DKGRAY_BRUSH	    3
#define BLACK_BRUSH	    4
#define NULL_BRUSH	    5
#define HOLLOW_BRUSH	    5
#define WHITE_PEN	    6
#define BLACK_PEN	    7
#define NULL_PEN	    8
#define OEM_FIXED_FONT	    10
#define ANSI_FIXED_FONT     11
#define ANSI_VAR_FONT	    12
#define SYSTEM_FONT	    13
#define DEVICE_DEFAULT_FONT 14
#define DEFAULT_PALETTE     15
#define SYSTEM_FIXED_FONT   16

/* 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

/* Messages */

#define WM_NULL                 0x0000
#define WM_CREATE               0x0001
#define WM_DESTROY              0x0002
#define WM_MOVE                 0x0003
#define WM_SIZEWAIT             0x0004
#define WM_SIZE                 0x0005
#define WM_ACTIVATE             0x0006
#define WM_SETFOCUS             0x0007
#define WM_KILLFOCUS            0x0008
#define WM_SETVISIBLE           0x0009
#define WM_ENABLE               0x000a
#define WM_SETREDRAW            0x000b
#define WM_SETTEXT              0x000c
#define WM_GETTEXT              0x000d
#define WM_GETTEXTLENGTH        0x000e
#define WM_PAINT                0x000f
#define WM_CLOSE                0x0010
#define WM_QUERYENDSESSION      0x0011
#define WM_QUIT                 0x0012
#define WM_QUERYOPEN            0x0013
#define WM_ERASEBKGND           0x0014
#define WM_SYSCOLORCHANGE       0x0015
#define WM_ENDSESSION           0x0016
#define WM_SYSTEMERROR          0x0017
#define WM_SHOWWINDOW           0x0018
#define WM_CTLCOLOR             0x0019
#define WM_WININICHANGE         0x001a
#define WM_DEVMODECHANGE        0x001b
#define WM_ACTIVATEAPP          0x001c
#define WM_FONTCHANGE           0x001d
#define WM_TIMECHANGE           0x001e
#define WM_CANCELMODE           0x001f
#define WM_SETCURSOR            0x0020
#define WM_MOUSEACTIVATE        0x0021
#define WM_CHILDACTIVATE        0x0022
#define WM_QUEUESYNC            0x0023
#define WM_GETMINMAXINFO        0x0024

#define WM_PAINTICON            0x0026
#define WM_ICONERASEBKGND       0x0027
#define WM_NEXTDLGCTL           0x0028
#define WM_ALTTABACTIVE         0x0029
#define WM_SPOOLERSTATUS        0x002a
#define WM_DRAWITEM             0x002b
#define WM_MEASUREITEM          0x002c
#define WM_DELETEITEM           0x002d
#define WM_VKEYTOITEM           0x002e
#define WM_CHARTOITEM           0x002f
#define WM_SETFONT              0x0030
#define WM_GETFONT              0x0031
#define WM_SETHOTKEY            0x0032
#define WM_GETHOTKEY            0x0033
#define WM_FILESYSCHANGE        0x0034
#define WM_ISACTIVEICON         0x0035
#define WM_QUERYPARKICON        0x0036
#define WM_QUERYDRAGICON        0x0037
#define WM_QUERYSAVESTATE       0x0038
#define WM_COMPAREITEM          0x0039
#define WM_TESTING              0x003a

#define WM_OTHERWINDOWCREATED	0x003c
#define WM_OTHERWINDOWDESTROYED	0x003d
#define WM_ACTIVATESHELLWINDOW	0x003e

#define WM_COMPACTING		0x0041

#define WM_COMMNOTIFY		0x0044
#define WM_WINDOWPOSCHANGING 	0x0046
#define WM_WINDOWPOSCHANGED 	0x0047
#define WM_POWER		0x0048

  /* Win32 4.0 messages */
#define WM_COPYDATA		0x004a
#define WM_CANCELJOURNAL	0x004b
#define WM_NOTIFY		0x004e
#define WM_HELP			0x0053
#define WM_NOTIFYFORMAT		0x0055

#define WM_CONTEXTMENU		0x007b
#define WM_STYLECHANGING 	0x007c
#define WM_STYLECHANGED		0x007d

#define WM_GETICON		0x007f
#define WM_SETICON		0x0080

  /* Non-client system messages */
#define WM_NCCREATE         0x0081
#define WM_NCDESTROY        0x0082
#define WM_NCCALCSIZE       0x0083
#define WM_NCHITTEST        0x0084
#define WM_NCPAINT          0x0085
#define WM_NCACTIVATE       0x0086

#define WM_GETDLGCODE	    0x0087
#define WM_SYNCPAINT	    0x0088
#define WM_SYNCTASK	    0x0089

  /* Non-client mouse messages */
#define WM_NCMOUSEMOVE      0x00a0
#define WM_NCLBUTTONDOWN    0x00a1
#define WM_NCLBUTTONUP      0x00a2
#define WM_NCLBUTTONDBLCLK  0x00a3
#define WM_NCRBUTTONDOWN    0x00a4
#define WM_NCRBUTTONUP      0x00a5
#define WM_NCRBUTTONDBLCLK  0x00a6
#define WM_NCMBUTTONDOWN    0x00a7
#define WM_NCMBUTTONUP      0x00a8
#define WM_NCMBUTTONDBLCLK  0x00a9

  /* Keyboard messages */
#define WM_KEYDOWN          0x0100
#define WM_KEYUP            0x0101
#define WM_CHAR             0x0102
#define WM_DEADCHAR         0x0103
#define WM_SYSKEYDOWN       0x0104
#define WM_SYSKEYUP         0x0105
#define WM_SYSCHAR          0x0106
#define WM_SYSDEADCHAR      0x0107
#define WM_KEYFIRST         WM_KEYDOWN
#define WM_KEYLAST          0x0108

#define WM_INITDIALOG       0x0110 
#define WM_COMMAND          0x0111
#define WM_SYSCOMMAND       0x0112
#define WM_TIMER	    0x0113
#define WM_SYSTIMER	    0x0118

  /* scroll messages */
#define WM_HSCROLL          0x0114
#define WM_VSCROLL          0x0115

/* Menu messages */
#define WM_INITMENU         0x0116
#define WM_INITMENUPOPUP    0x0117

#define WM_MENUSELECT       0x011F
#define WM_MENUCHAR         0x0120
#define WM_ENTERIDLE        0x0121

#define WM_LBTRACKPOINT     0x0131

  /* Win32 CTLCOLOR messages */
#define WM_CTLCOLORMSGBOX    0x0132
#define WM_CTLCOLOREDIT      0x0133
#define WM_CTLCOLORLISTBOX   0x0134
#define WM_CTLCOLORBTN       0x0135
#define WM_CTLCOLORDLG       0x0136
#define WM_CTLCOLORSCROLLBAR 0x0137
#define WM_CTLCOLORSTATIC    0x0138

  /* Mouse messages */
#define WM_MOUSEMOVE	    0x0200
#define WM_LBUTTONDOWN	    0x0201
#define WM_LBUTTONUP	    0x0202
#define WM_LBUTTONDBLCLK    0x0203
#define WM_RBUTTONDOWN	    0x0204
#define WM_RBUTTONUP	    0x0205
#define WM_RBUTTONDBLCLK    0x0206
#define WM_MBUTTONDOWN	    0x0207
#define WM_MBUTTONUP	    0x0208
#define WM_MBUTTONDBLCLK    0x0209
#define WM_MOUSEFIRST	    WM_MOUSEMOVE
#define WM_MOUSELAST	    WM_MBUTTONDBLCLK

#define WM_PARENTNOTIFY     0x0210
#define WM_ENTERMENULOOP    0x0211
#define WM_EXITMENULOOP     0x0212
#define WM_NEXTMENU	    0x0213

  /* Win32 4.0 messages */
#define WM_SIZING	    0x0214
#define WM_CAPTURECHANGED   0x0215
#define WM_MOVING	    0x0216

  /* MDI messages */
#define WM_MDICREATE	    0x0220
#define WM_MDIDESTROY	    0x0221
#define WM_MDIACTIVATE	    0x0222
#define WM_MDIRESTORE	    0x0223
#define WM_MDINEXT	    0x0224
#define WM_MDIMAXIMIZE	    0x0225
#define WM_MDITILE	    0x0226
#define WM_MDICASCADE	    0x0227
#define WM_MDIICONARRANGE   0x0228
#define WM_MDIGETACTIVE     0x0229

  /* D&D messages */
#define WM_DROPOBJECT	    0x022A
#define WM_QUERYDROPOBJECT  0x022B
#define WM_BEGINDRAG	    0x022C
#define WM_DRAGLOOP	    0x022D
#define WM_DRAGSELECT	    0x022E
#define WM_DRAGMOVE	    0x022F
#define WM_MDISETMENU	    0x0230

#define WM_ENTERSIZEMOVE    0x0231
#define WM_EXITSIZEMOVE     0x0232
#define WM_DROPFILES	    0x0233

#define WM_CUT               0x0300
#define WM_COPY              0x0301
#define WM_PASTE             0x0302
#define WM_CLEAR             0x0303
#define WM_UNDO              0x0304
#define WM_RENDERFORMAT      0x0305
#define WM_RENDERALLFORMATS  0x0306
#define WM_DESTROYCLIPBOARD  0x0307
#define WM_DRAWCLIPBOARD     0x0308
#define WM_PAINTCLIPBOARD    0x0309
#define WM_VSCROLLCLIPBOARD  0x030A
#define WM_SIZECLIPBOARD     0x030B
#define WM_ASKCBFORMATNAME   0x030C
#define WM_CHANGECBCHAIN     0x030D
#define WM_HSCROLLCLIPBOARD  0x030E
#define WM_QUERYNEWPALETTE   0x030F
#define WM_PALETTEISCHANGING 0x0310
#define WM_PALETTECHANGED    0x0311
#define WM_HOTKEY	     0x0312

#define WM_PRINT             0x0317
#define WM_PRINTCLIENT       0x0318

#define WM_COALESCE_FIRST    0x0390
#define WM_COALESCE_LAST     0x039F

  /* misc messages */
#define WM_NULL             0x0000
#define WM_USER             0x0400
#define WM_CPL_LAUNCH       (WM_USER + 1000)
#define WM_CPL_LAUNCHED     (WM_USER + 1001)

  /* 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

  /* Mouse_Event flags */
#define ME_MOVE             0x01
#define ME_LDOWN            0x02
#define ME_LUP              0x04
#define ME_RDOWN            0x08
#define ME_RUP              0x10

  /* Queue status flags */
#define QS_KEY		0x0001
#define QS_MOUSEMOVE	0x0002
#define QS_MOUSEBUTTON	0x0004
#define QS_MOUSE	(QS_MOUSEMOVE | QS_MOUSEBUTTON)
#define QS_POSTMESSAGE	0x0008
#define QS_TIMER	0x0010
#define QS_PAINT	0x0020
#define QS_SENDMESSAGE	0x0040
#define QS_ALLINPUT     0x007f

  /* PeekMessage() options */
#define PM_NOREMOVE	0x0000
#define PM_REMOVE	0x0001
#define PM_NOYIELD	0x0002

#define WM_SHOWWINDOW       0x0018

/* WM_SHOWWINDOW wParam codes */
#define SW_PARENTCLOSING    1
#define SW_OTHERMAXIMIZED   2
#define SW_PARENTOPENING    3
#define SW_OTHERRESTORED    4

  /* ShowWindow() codes */
#define SW_HIDE             0
#define SW_SHOWNORMAL       1
#define SW_NORMAL           1
#define SW_SHOWMINIMIZED    2
#define SW_SHOWMAXIMIZED    3
#define SW_MAXIMIZE         3
#define SW_SHOWNOACTIVATE   4
#define SW_SHOW             5
#define SW_MINIMIZE         6
#define SW_SHOWMINNOACTIVE  7
#define SW_SHOWNA           8
#define SW_RESTORE          9
#define SW_SHOWDEFAULT	    10
#define SW_MAX		    10
#define SW_NORMALNA	    0xCC	/* undoc. flag in MinMaximize */

  /* WM_SIZE message wParam values */
#define SIZE_RESTORED        0
#define SIZE_MINIMIZED       1
#define SIZE_MAXIMIZED       2
#define SIZE_MAXSHOW         3
#define SIZE_MAXHIDE         4
#define SIZENORMAL           SIZE_RESTORED
#define SIZEICONIC           SIZE_MINIMIZED
#define SIZEFULLSCREEN       SIZE_MAXIMIZED
#define SIZEZOOMSHOW         SIZE_MAXSHOW
#define SIZEZOOMHIDE         SIZE_MAXHIDE

/* SetWindowPos() and WINDOWPOS flags */
#define SWP_NOSIZE          0x0001
#define SWP_NOMOVE          0x0002
#define SWP_NOZORDER        0x0004
#define SWP_NOREDRAW        0x0008
#define SWP_NOACTIVATE      0x0010
#define SWP_FRAMECHANGED    0x0020  /* The frame changed: send WM_NCCALCSIZE */
#define SWP_SHOWWINDOW      0x0040
#define SWP_HIDEWINDOW      0x0080
#define SWP_NOCOPYBITS      0x0100
#define SWP_NOOWNERZORDER   0x0200  /* Don't do owner Z ordering */

#define SWP_DRAWFRAME       SWP_FRAMECHANGED
#define SWP_NOREPOSITION    SWP_NOOWNERZORDER

#define SWP_NOSENDCHANGING  0x0400
#define SWP_DEFERERASE      0x2000

#define HWND_BROADCAST      ((HWND32)0xffff)

/* SetWindowPos() hwndInsertAfter field values */
#define HWND_TOP            ((HWND32)0)
#define HWND_BOTTOM         ((HWND32)1)
#define HWND_TOPMOST        ((HWND32)-1)
#define HWND_NOTOPMOST      ((HWND32)-2)

/* Flags for TrackPopupMenu */
#define TPM_LEFTBUTTON    0x0000
#define TPM_RIGHTBUTTON   0x0002
#define TPM_LEFTALIGN     0x0000
#define TPM_CENTERALIGN   0x0004
#define TPM_RIGHTALIGN    0x0008
#define TPM_TOPALIGN      0x0000
#define TPM_VCENTERALIGN  0x0010
#define TPM_BOTTOMALIGN   0x0020
#define TPM_HORIZONTAL    0x0000
#define TPM_VERTICAL      0x0040
#define TPM_NONOTIFY      0x0080
#define TPM_RETURNCMD     0x0100

typedef struct 
{
    UINT32   cbSize;
    RECT32   rcExclude;
} TPMPARAMS, *LPTPMPARAMS;


#define MF_INSERT          0x0000
#define MF_CHANGE          0x0080
#define MF_APPEND          0x0100
#define MF_DELETE          0x0200
#define MF_REMOVE          0x1000
#define MF_END             0x0080

#define MF_ENABLED         0x0000
#define MF_GRAYED          0x0001
#define MF_DISABLED        0x0002
#define MF_STRING          0x0000
#define MF_BITMAP          0x0004
#define MF_UNCHECKED       0x0000
#define MF_CHECKED         0x0008
#define MF_POPUP           0x0010
#define MF_MENUBARBREAK    0x0020
#define MF_MENUBREAK       0x0040
#define MF_UNHILITE        0x0000
#define MF_HILITE          0x0080
#define MF_OWNERDRAW       0x0100
#define MF_USECHECKBITMAPS 0x0200
#define MF_BYCOMMAND       0x0000
#define MF_BYPOSITION      0x0400
#define MF_SEPARATOR       0x0800
#define MF_SYSMENU         0x2000
#define MF_HELP            0x4000
#define MF_MOUSESELECT     0x8000

#ifndef NOWINOFFSETS
#define GCW_HBRBACKGROUND (-10)
#endif

#define MB_OK               0x0000
#define MB_OKCANCEL         0x0001
#define MB_ABORTRETRYIGNORE 0x0002
#define MB_YESNOCANCEL      0x0003
#define MB_YESNO            0x0004
#define MB_RETRYCANCEL      0x0005
#define MB_TYPEMASK         0x000F

#define MB_ICONHAND         0x0010
#define MB_ICONQUESTION     0x0020
#define MB_ICONEXCLAMATION  0x0030
#define MB_ICONASTERISK     0x0040
#define MB_ICONMASK         0x00F0

#define MB_ICONINFORMATION  MB_ICONASTERISK
#define MB_ICONSTOP         MB_ICONHAND

#define MB_DEFBUTTON1       0x0000
#define MB_DEFBUTTON2       0x0100
#define MB_DEFBUTTON3       0x0200
#define MB_DEFMASK          0x0F00

#define MB_APPLMODAL        0x0000
#define MB_SYSTEMMODAL      0x1000
#define MB_TASKMODAL        0x2000

#define MB_NOFOCUS          0x8000


#define DT_TOP 0
#define DT_LEFT 0
#define DT_CENTER 1
#define DT_RIGHT 2
#define DT_VCENTER 4
#define DT_BOTTOM 8
#define DT_WORDBREAK 16
#define DT_SINGLELINE 32
#define DT_EXPANDTABS 64
#define DT_TABSTOP 128
#define DT_NOCLIP 256
#define DT_EXTERNALLEADING 512
#define DT_CALCRECT 1024
#define DT_NOPREFIX 2048
#define DT_INTERNAL 4096

/* DrawEdge() flags */
#define BDR_RAISEDOUTER    0x0001
#define BDR_SUNKENOUTER    0x0002
#define BDR_RAISEDINNER    0x0004
#define BDR_SUNKENINNER    0x0008

#define BDR_OUTER          0x0003
#define BDR_INNER          0x000c
#define BDR_RAISED         0x0005
#define BDR_SUNKEN         0x000a

#define EDGE_RAISED        (BDR_RAISEDOUTER | BDR_RAISEDINNER)
#define EDGE_SUNKEN        (BDR_SUNKENOUTER | BDR_SUNKENINNER)
#define EDGE_ETCHED        (BDR_SUNKENOUTER | BDR_RAISEDINNER)
#define EDGE_BUMP          (BDR_RAISEDOUTER | BDR_SUNKENINNER)

/* border flags */
#define BF_LEFT            0x0001
#define BF_TOP             0x0002
#define BF_RIGHT           0x0004
#define BF_BOTTOM          0x0008
#define BF_DIAGONAL        0x0010
#define BF_MIDDLE          0x0800  /* Fill in the middle */
#define BF_SOFT            0x1000  /* For softer buttons */
#define BF_ADJUST          0x2000  /* Calculate the space left over */
#define BF_FLAT            0x4000  /* For flat rather than 3D borders */
#define BF_MONO            0x8000  /* For monochrome borders */
#define BF_TOPLEFT         (BF_TOP | BF_LEFT)
#define BF_TOPRIGHT        (BF_TOP | BF_RIGHT)
#define BF_BOTTOMLEFT      (BF_BOTTOM | BF_LEFT)
#define BF_BOTTOMRIGHT     (BF_BOTTOM | BF_RIGHT)
#define BF_RECT            (BF_LEFT | BF_TOP | BF_RIGHT | BF_BOTTOM)
#define BF_DIAGONAL_ENDTOPRIGHT     (BF_DIAGONAL | BF_TOP | BF_RIGHT)
#define BF_DIAGONAL_ENDTOPLEFT      (BF_DIAGONAL | BF_TOP | BF_LEFT)
#define BF_DIAGONAL_ENDBOTTOMLEFT   (BF_DIAGONAL | BF_BOTTOM | BF_LEFT)
#define BF_DIAGONAL_ENDBOTTOMRIGHT  (BF_DIAGONAL | BF_BOTTOM | BF_RIGHT)

/* Window Styles */
#define WS_OVERLAPPED    0x00000000L
#define WS_POPUP         0x80000000L
#define WS_CHILD         0x40000000L
#define WS_MINIMIZE      0x20000000L
#define WS_VISIBLE       0x10000000L
#define WS_DISABLED      0x08000000L
#define WS_CLIPSIBLINGS  0x04000000L
#define WS_CLIPCHILDREN  0x02000000L
#define WS_MAXIMIZE      0x01000000L
#define WS_CAPTION       0x00C00000L
#define WS_BORDER        0x00800000L
#define WS_DLGFRAME      0x00400000L
#define WS_VSCROLL       0x00200000L
#define WS_HSCROLL       0x00100000L
#define WS_SYSMENU       0x00080000L
#define WS_THICKFRAME    0x00040000L
#define WS_GROUP         0x00020000L
#define WS_TABSTOP       0x00010000L
#define WS_MINIMIZEBOX   0x00020000L
#define WS_MAXIMIZEBOX   0x00010000L
#define WS_TILED         WS_OVERLAPPED
#define WS_ICONIC        WS_MINIMIZE
#define WS_SIZEBOX       WS_THICKFRAME
#define WS_OVERLAPPEDWINDOW (WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME| WS_MINIMIZEBOX | WS_MAXIMIZEBOX)
#define WS_POPUPWINDOW (WS_POPUP | WS_BORDER | WS_SYSMENU)
#define WS_CHILDWINDOW (WS_CHILD)
#define WS_TILEDWINDOW (WS_OVERLAPPEDWINDOW)

/* Window extended styles */
#define WS_EX_DLGMODALFRAME    0x00000001L
#define WS_EX_DRAGDETECT       0x00000002L
#define WS_EX_NOPARENTNOTIFY   0x00000004L
#define WS_EX_TOPMOST          0x00000008L
#define WS_EX_ACCEPTFILES      0x00000010L
#define WS_EX_TRANSPARENT      0x00000020L

/* Window scrolling */
#define SW_SCROLLCHILDREN      0x0001
#define SW_INVALIDATE          0x0002
#define SW_ERASE               0x0004

/* CreateWindow() coordinates */
#define CW_USEDEFAULT16 ((INT16)0x8000)
#define CW_USEDEFAULT32 ((INT32)0x80000000)
#define CW_USEDEFAULT   WINELIB_NAME(CW_USEDEFAULT)

/* Button control styles */
#define BS_PUSHBUTTON          0x00000000L
#define BS_DEFPUSHBUTTON       0x00000001L
#define BS_CHECKBOX            0x00000002L
#define BS_AUTOCHECKBOX        0x00000003L
#define BS_RADIOBUTTON         0x00000004L
#define BS_3STATE              0x00000005L
#define BS_AUTO3STATE          0x00000006L
#define BS_GROUPBOX            0x00000007L
#define BS_USERBUTTON          0x00000008L
#define BS_AUTORADIOBUTTON     0x00000009L
#define BS_OWNERDRAW           0x0000000BL
#define BS_LEFTTEXT            0x00000020L

/* Win16 button control messages */
#define BM_GETCHECK16          (WM_USER+0)
#define BM_SETCHECK16          (WM_USER+1)
#define BM_GETSTATE16          (WM_USER+2)
#define BM_SETSTATE16          (WM_USER+3)
#define BM_SETSTYLE16          (WM_USER+4)
#define BM_CLICK16             WM_NULL  /* Does not exist in Win16 */
#define BM_GETIMAGE16          WM_NULL  /* Does not exist in Win16 */
#define BM_SETIMAGE16          WM_NULL  /* Does not exist in Win16 */
/* Win32 button control messages */
#define BM_GETCHECK32          0x00f0
#define BM_SETCHECK32          0x00f1
#define BM_GETSTATE32          0x00f2
#define BM_SETSTATE32          0x00f3
#define BM_SETSTYLE32          0x00f4
#define BM_CLICK32             0x00f5
#define BM_GETIMAGE32          0x00f6
#define BM_SETIMAGE32          0x00f7
/* Winelib button control messages */
#define BM_GETCHECK            WINELIB_NAME(BM_GETCHECK)
#define BM_SETCHECK            WINELIB_NAME(BM_SETCHECK)
#define BM_GETSTATE            WINELIB_NAME(BM_GETSTATE)
#define BM_SETSTATE            WINELIB_NAME(BM_SETSTATE)
#define BM_SETSTYLE            WINELIB_NAME(BM_SETSTYLE)
#define BM_CLICK               WINELIB_NAME(BM_CLICK)
#define BM_GETIMAGE            WINELIB_NAME(BM_GETIMAGE)
#define BM_SETIMAGE            WINELIB_NAME(BM_SETIMAGE)

/* Button notification codes */
#define BN_CLICKED             0
#define BN_PAINT               1
#define BN_HILITE              2
#define BN_UNHILITE            3
#define BN_DISABLE             4
#define BN_DOUBLECLICKED       5

/* Static Control Styles */
#define SS_LEFT             0x00000000L
#define SS_CENTER           0x00000001L
#define SS_RIGHT            0x00000002L
#define SS_ICON             0x00000003L
#define SS_BLACKRECT        0x00000004L
#define SS_GRAYRECT         0x00000005L
#define SS_WHITERECT        0x00000006L
#define SS_BLACKFRAME       0x00000007L
#define SS_GRAYFRAME        0x00000008L
#define SS_WHITEFRAME       0x00000009L
#define SS_SIMPLE           0x0000000BL
#define SS_LEFTNOWORDWRAP   0x0000000CL
#define SS_NOPREFIX         0x00000080L

/* Static Control Messages */
#define STM_SETICON         (WM_USER+0)
#define STM_GETICON         (WM_USER+1)

/* WM_H/VSCROLL commands */
#define SB_LINEUP           0
#define SB_LINELEFT         0
#define SB_LINEDOWN         1
#define SB_LINERIGHT        1
#define SB_PAGEUP           2
#define SB_PAGELEFT         2
#define SB_PAGEDOWN         3
#define SB_PAGERIGHT        3
#define SB_THUMBPOSITION    4
#define SB_THUMBTRACK       5
#define SB_TOP              6
#define SB_LEFT             6
#define SB_BOTTOM           7
#define SB_RIGHT            7
#define SB_ENDSCROLL        8

/* Scroll bar selection constants */
#define SB_HORZ             0
#define SB_VERT             1
#define SB_CTL              2
#define SB_BOTH             3

/* Scrollbar styles */
#define SBS_HORZ                    0x0000L
#define SBS_VERT                    0x0001L
#define SBS_TOPALIGN                0x0002L
#define SBS_LEFTALIGN               0x0002L
#define SBS_BOTTOMALIGN             0x0004L
#define SBS_RIGHTALIGN              0x0004L
#define SBS_SIZEBOXTOPLEFTALIGN     0x0002L
#define SBS_SIZEBOXBOTTOMRIGHTALIGN 0x0004L
#define SBS_SIZEBOX                 0x0008L

/* EnableScrollBar() flags */
#define ESB_ENABLE_BOTH     0x0000
#define ESB_DISABLE_BOTH    0x0003

#define ESB_DISABLE_LEFT    0x0001
#define ESB_DISABLE_RIGHT   0x0002

#define ESB_DISABLE_UP      0x0001
#define ESB_DISABLE_DOWN    0x0002

#define ESB_DISABLE_LTUP    ESB_DISABLE_LEFT
#define ESB_DISABLE_RTDN    ESB_DISABLE_RIGHT

/* Scrollbar messages */
#define SBM_SETPOS16             (WM_USER+0)
#define SBM_SETPOS32             0x00e0
#define SBM_SETPOS               WINELIB_NAME(SBM_SETPOS)
#define SBM_GETPOS16             (WM_USER+1)
#define SBM_GETPOS32             0x00e1
#define SBM_GETPOS               WINELIB_NAME(SBM_GETPOS)
#define SBM_SETRANGE16           (WM_USER+2)
#define SBM_SETRANGE32           0x00e2
#define SBM_SETRANGE             WINELIB_NAME(SBM_SETRANGE)
#define SBM_GETRANGE16           (WM_USER+3)
#define SBM_GETRANGE32           0x00e3
#define SBM_GETRANGE             WINELIB_NAME(SBM_GETRANGE)
#define SBM_ENABLE_ARROWS16      (WM_USER+4)
#define SBM_ENABLE_ARROWS32      0x00e4
#define SBM_ENABLE_ARROWS        WINELIB_NAME(SBM_ENABLE_ARROWS)
#define SBM_SETRANGEREDRAW16     WM_NULL  /* Not in Win16 */
#define SBM_SETRANGEREDRAW32     0x00e6
#define SBM_SETRANGEREDRAW       WINELIB_NAME(SBM_SETRANGEREDRAW)
#define SBM_SETSCROLLINFO16      WM_NULL  /* Not in Win16 */
#define SBM_SETSCROLLINFO32      0x00e9
#define SBM_SETSCROLLINFO        WINELIB_NAME(SBM_SETSCROLLINFO)
#define SBM_GETSCROLLINFO16      WM_NULL  /* Not in Win16 */
#define SBM_GETSCROLLINFO32      0x00ea
#define SBM_GETSCROLLINFO        WINELIB_NAME(SBM_GETSCROLLINFO)

/* Scrollbar info */
typedef struct
{
    UINT32    cbSize;
    UINT32    fMask;
    INT32     nMin;
    INT32     nMax;
    UINT32    nPage;
    INT32     nPos;
    INT32     nTrackPos;
} SCROLLINFO, *LPSCROLLINFO;
 
/* GetScrollInfo() flags */ 
#define SIF_RANGE           0x0001
#define SIF_PAGE            0x0002
#define SIF_POS             0x0004
#define SIF_DISABLENOSCROLL 0x0008
#define SIF_TRACKPOS        0x0010
#define SIF_ALL             (SIF_RANGE | SIF_PAGE | SIF_POS | SIF_TRACKPOS)

/* Listbox styles */
#define LBS_NOTIFY               0x0001
#define LBS_SORT                 0x0002
#define LBS_NOREDRAW             0x0004
#define LBS_MULTIPLESEL          0x0008
#define LBS_OWNERDRAWFIXED       0x0010
#define LBS_OWNERDRAWVARIABLE    0x0020
#define LBS_HASSTRINGS           0x0040
#define LBS_USETABSTOPS          0x0080
#define LBS_NOINTEGRALHEIGHT     0x0100
#define LBS_MULTICOLUMN          0x0200
#define LBS_WANTKEYBOARDINPUT    0x0400
#define LBS_EXTENDEDSEL          0x0800
#define LBS_DISABLENOSCROLL      0x1000
#define LBS_NODATA               0x2000
#define LBS_NOSEL                0x4000
#define LBS_STANDARD  (LBS_NOTIFY | LBS_SORT | WS_VSCROLL | WS_BORDER)

/* Listbox messages */
#define LB_ADDSTRING16           (WM_USER+1)
#define LB_ADDSTRING32           0x0180
#define LB_ADDSTRING             WINELIB_NAME(LB_ADDSTRING)
#define LB_INSERTSTRING16        (WM_USER+2)
#define LB_INSERTSTRING32        0x0181
#define LB_INSERTSTRING          WINELIB_NAME(LB_INSERTSTRING)
#define LB_DELETESTRING16        (WM_USER+3)
#define LB_DELETESTRING32        0x0182
#define LB_DELETESTRING          WINELIB_NAME(LB_DELETESTRING)
#define LB_SELITEMRANGEEX16      (WM_USER+4)
#define LB_SELITEMRANGEEX32      0x0183
#define LB_SELITEMRANGEEX        WINELIB_NAME(LB_SELITEMRANGEEX)
#define LB_RESETCONTENT16        (WM_USER+5)
#define LB_RESETCONTENT32        0x0184
#define LB_RESETCONTENT          WINELIB_NAME(LB_RESETCONTENT)
#define LB_SETSEL16              (WM_USER+6)
#define LB_SETSEL32              0x0185
#define LB_SETSEL                WINELIB_NAME(LB_SETSEL)
#define LB_SETCURSEL16           (WM_USER+7)
#define LB_SETCURSEL32           0x0186
#define LB_SETCURSEL             WINELIB_NAME(LB_SETCURSEL)
#define LB_GETSEL16              (WM_USER+8)
#define LB_GETSEL32              0x0187
#define LB_GETSEL                WINELIB_NAME(LB_GETSEL)
#define LB_GETCURSEL16           (WM_USER+9)
#define LB_GETCURSEL32           0x0188
#define LB_GETCURSEL             WINELIB_NAME(LB_GETCURSEL)
#define LB_GETTEXT16             (WM_USER+10)
#define LB_GETTEXT32             0x0189
#define LB_GETTEXT               WINELIB_NAME(LB_GETTEXT)
#define LB_GETTEXTLEN16          (WM_USER+11)
#define LB_GETTEXTLEN32          0x018a
#define LB_GETTEXTLEN            WINELIB_NAME(LB_GETTEXTLEN)
#define LB_GETCOUNT16            (WM_USER+12)
#define LB_GETCOUNT32            0x018b
#define LB_GETCOUNT              WINELIB_NAME(LB_GETCOUNT)
#define LB_SELECTSTRING16        (WM_USER+13)
#define LB_SELECTSTRING32        0x018c
#define LB_SELECTSTRING          WINELIB_NAME(LB_SELECTSTRING)
#define LB_DIR16                 (WM_USER+14)
#define LB_DIR32                 0x018d
#define LB_DIR                   WINELIB_NAME(LB_DIR)
#define LB_GETTOPINDEX16         (WM_USER+15)
#define LB_GETTOPINDEX32         0x018e
#define LB_GETTOPINDEX           WINELIB_NAME(LB_GETTOPINDEX)
#define LB_FINDSTRING16          (WM_USER+16)
#define LB_FINDSTRING32          0x018f
#define LB_FINDSTRING            WINELIB_NAME(LB_FINDSTRING)
#define LB_GETSELCOUNT16         (WM_USER+17)
#define LB_GETSELCOUNT32         0x0190
#define LB_GETSELCOUNT           WINELIB_NAME(LB_GETSELCOUNT)
#define LB_GETSELITEMS16         (WM_USER+18)
#define LB_GETSELITEMS32         0x0191
#define LB_GETSELITEMS           WINELIB_NAME(LB_GETSELITEMS)
#define LB_SETTABSTOPS16         (WM_USER+19)
#define LB_SETTABSTOPS32         0x0192
#define LB_SETTABSTOPS           WINELIB_NAME(LB_SETTABSTOPS)
#define LB_GETHORIZONTALEXTENT16 (WM_USER+20)
#define LB_GETHORIZONTALEXTENT32 0x0193
#define LB_GETHORIZONTALEXTENT   WINELIB_NAME(LB_GETHORIZONTALEXTENT)
#define LB_SETHORIZONTALEXTENT16 (WM_USER+21)
#define LB_SETHORIZONTALEXTENT32 0x0194
#define LB_SETHORIZONTALEXTENT   WINELIB_NAME(LB_SETHORIZONTALEXTENT)
#define LB_SETCOLUMNWIDTH16      (WM_USER+22)
#define LB_SETCOLUMNWIDTH32      0x0195
#define LB_SETCOLUMNWIDTH        WINELIB_NAME(LB_SETCOLUMNWIDTH)
#define LB_ADDFILE16             (WM_USER+23)
#define LB_ADDFILE32             0x0196
#define LB_ADDFILE               WINELIB_NAME(LB_ADDFILE)
#define LB_SETTOPINDEX16         (WM_USER+24)
#define LB_SETTOPINDEX32         0x0197
#define LB_SETTOPINDEX           WINELIB_NAME(LB_SETTOPINDEX)
#define LB_GETITEMRECT16         (WM_USER+25)
#define LB_GETITEMRECT32         0x0198
#define LB_GETITEMRECT           WINELIB_NAME(LB_GETITEMRECT)
#define LB_GETITEMDATA16         (WM_USER+26)
#define LB_GETITEMDATA32         0x0199
#define LB_GETITEMDATA           WINELIB_NAME(LB_GETITEMDATA)
#define LB_SETITEMDATA16         (WM_USER+27)
#define LB_SETITEMDATA32         0x019a
#define LB_SETITEMDATA           WINELIB_NAME(LB_SETITEMDATA)
#define LB_SELITEMRANGE16        (WM_USER+28)
#define LB_SELITEMRANGE32        0x019b
#define LB_SELITEMRANGE          WINELIB_NAME(LB_SELITEMRANGE)
#define LB_SETANCHORINDEX16      (WM_USER+29)
#define LB_SETANCHORINDEX32      0x019c
#define LB_SETANCHORINDEX        WINELIB_NAME(LB_SETANCHORINDEX)
#define LB_GETANCHORINDEX16      (WM_USER+30)
#define LB_GETANCHORINDEX32      0x019d
#define LB_GETANCHORINDEX        WINELIB_NAME(LB_GETANCHORINDEX)
#define LB_SETCARETINDEX16       (WM_USER+31)
#define LB_SETCARETINDEX32       0x019e
#define LB_SETCARETINDEX         WINELIB_NAME(LB_SETCARETINDEX)
#define LB_GETCARETINDEX16       (WM_USER+32)
#define LB_GETCARETINDEX32       0x019f
#define LB_GETCARETINDEX         WINELIB_NAME(LB_GETCARETINDEX)
#define LB_SETITEMHEIGHT16       (WM_USER+33)
#define LB_SETITEMHEIGHT32       0x01a0
#define LB_SETITEMHEIGHT         WINELIB_NAME(LB_SETITEMHEIGHT)
#define LB_GETITEMHEIGHT16       (WM_USER+34)
#define LB_GETITEMHEIGHT32       0x01a1
#define LB_GETITEMHEIGHT         WINELIB_NAME(LB_GETITEMHEIGHT)
#define LB_FINDSTRINGEXACT16     (WM_USER+35)
#define LB_FINDSTRINGEXACT32     0x01a2
#define LB_FINDSTRINGEXACT       WINELIB_NAME(LB_FINDSTRINGEXACT)
#define LB_CARETON16             (WM_USER+36)
#define LB_CARETON32             0x01a3
#define LB_CARETON               WINELIB_NAME(LB_CARETON)
#define LB_CARETOFF16            (WM_USER+37)
#define LB_CARETOFF32            0x01a4
#define LB_CARETOFF              WINELIB_NAME(LB_CARETOFF)
#define LB_SETLOCALE16           WM_NULL  /* Not in Win16 */
#define LB_SETLOCALE32           0x01a5
#define LB_SETLOCALE             WINELIB_NAME(LB_SETLOCALE)
#define LB_GETLOCALE16           WM_NULL  /* Not in Win16 */
#define LB_GETLOCALE32           0x01a6
#define LB_GETLOCALE             WINELIB_NAME(LB_GETLOCALE)
#define LB_SETCOUNT16            WM_NULL  /* Not in Win16 */
#define LB_SETCOUNT32            0x01a7
#define LB_SETCOUNT              WINELIB_NAME(LB_SETCOUNT)
#define LB_INITSTORAGE16         WM_NULL  /* Not in Win16 */
#define LB_INITSTORAGE32         0x01a8
#define LB_INITSTORAGE           WINELIB_NAME(LB_INITSTORAGE)
#define LB_ITEMFROMPOINT16       WM_NULL  /* Not in Win16 */
#define LB_ITEMFROMPOINT32       0x01a9
#define LB_ITEMFROMPOINT         WINELIB_NAME(LB_ITEMFROMPOINT)

/* Listbox notification codes */
#define LBN_ERRSPACE        (-2)
#define LBN_SELCHANGE       1
#define LBN_DBLCLK          2
#define LBN_SELCANCEL       3
#define LBN_SETFOCUS        4
#define LBN_KILLFOCUS       5

/* Listbox message return values */
#define LB_OKAY             0
#define LB_ERR              (-1)
#define LB_ERRSPACE         (-2)

#define LB_CTLCODE          0L

/* Combo box styles */
#define CBS_SIMPLE            0x0001L
#define CBS_DROPDOWN          0x0002L
#define CBS_DROPDOWNLIST      0x0003L
#define CBS_OWNERDRAWFIXED    0x0010L
#define CBS_OWNERDRAWVARIABLE 0x0020L
#define CBS_AUTOHSCROLL       0x0040L
#define CBS_OEMCONVERT        0x0080L
#define CBS_SORT              0x0100L
#define CBS_HASSTRINGS        0x0200L
#define CBS_NOINTEGRALHEIGHT  0x0400L
#define CBS_DISABLENOSCROLL   0x0800L

/* Combo box messages */
#define CB_GETEDITSEL16            (WM_USER+0)
#define CB_GETEDITSEL32            0x0140
#define CB_GETEDITSEL              WINELIB_NAME(CB_GETEDITSEL)
#define CB_LIMITTEXT16             (WM_USER+1)
#define CB_LIMITTEXT32             0x0141
#define CB_LIMITTEXT               WINELIB_NAME(CB_LIMITTEXT)
#define CB_SETEDITSEL16            (WM_USER+2)
#define CB_SETEDITSEL32            0x0142
#define CB_SETEDITSEL              WINELIB_NAME(CB_SETEDITSEL)
#define CB_ADDSTRING16             (WM_USER+3)
#define CB_ADDSTRING32             0x0143
#define CB_ADDSTRING               WINELIB_NAME(CB_ADDSTRING)
#define CB_DELETESTRING16          (WM_USER+4)
#define CB_DELETESTRING32          0x0144
#define CB_DELETESTRING            WINELIB_NAME(CB_DELETESTRING)
#define CB_DIR16                   (WM_USER+5)
#define CB_DIR32                   0x0145
#define CB_DIR                     WINELIB_NAME(CB_DIR)
#define CB_GETCOUNT16              (WM_USER+6)
#define CB_GETCOUNT32              0x0146
#define CB_GETCOUNT                WINELIB_NAME(CB_GETCOUNT)
#define CB_GETCURSEL16             (WM_USER+7)
#define CB_GETCURSEL32             0x0147
#define CB_GETCURSEL               WINELIB_NAME(CB_GETCURSEL)
#define CB_GETLBTEXT16             (WM_USER+8)
#define CB_GETLBTEXT32             0x0148
#define CB_GETLBTEXT               WINELIB_NAME(CB_GETLBTEXT)
#define CB_GETLBTEXTLEN16          (WM_USER+9)
#define CB_GETLBTEXTLEN32          0x0149
#define CB_GETLBTEXTLEN            WINELIB_NAME(CB_GETLBTEXTLEN)
#define CB_INSERTSTRING16          (WM_USER+10)
#define CB_INSERTSTRING32          0x014a
#define CB_INSERTSTRING            WINELIB_NAME(CB_INSERTSTRING)
#define CB_RESETCONTENT16          (WM_USER+11)
#define CB_RESETCONTENT32          0x014b
#define CB_RESETCONTENT            WINELIB_NAME(CB_RESETCONTENT)
#define CB_FINDSTRING16            (WM_USER+12)
#define CB_FINDSTRING32            0x014c
#define CB_FINDSTRING              WINELIB_NAME(CB_FINDSTRING)
#define CB_SELECTSTRING16          (WM_USER+13)
#define CB_SELECTSTRING32          0x014d
#define CB_SELECTSTRING            WINELIB_NAME(CB_SELECTSTRING)
#define CB_SETCURSEL16             (WM_USER+14)
#define CB_SETCURSEL32             0x014e
#define CB_SETCURSEL               WINELIB_NAME(CB_SETCURSEL)
#define CB_SHOWDROPDOWN16          (WM_USER+15)
#define CB_SHOWDROPDOWN32          0x014f
#define CB_SHOWDROPDOWN            WINELIB_NAME(CB_SHOWDROPDOWN)
#define CB_GETITEMDATA16           (WM_USER+16)
#define CB_GETITEMDATA32           0x0150
#define CB_GETITEMDATA             WINELIB_NAME(CB_GETITEMDATA)
#define CB_SETITEMDATA16           (WM_USER+17)
#define CB_SETITEMDATA32           0x0151
#define CB_SETITEMDATA             WINELIB_NAME(CB_SETITEMDATA)
#define CB_GETDROPPEDCONTROLRECT16 (WM_USER+18)
#define CB_GETDROPPEDCONTROLRECT32 0x0152
#define CB_GETDROPPEDCONTROLRECT   WINELIB_NAME(CB_GETDROPPEDCONTROLRECT)
#define CB_SETITEMHEIGHT16         (WM_USER+19)
#define CB_SETITEMHEIGHT32         0x0153
#define CB_SETITEMHEIGHT           WINELIB_NAME(CB_SETITEMHEIGHT)
#define CB_GETITEMHEIGHT16         (WM_USER+20)
#define CB_GETITEMHEIGHT32         0x0154
#define CB_GETITEMHEIGHT           WINELIB_NAME(CB_GETITEMHEIGHT)
#define CB_SETEXTENDEDUI16         (WM_USER+21)
#define CB_SETEXTENDEDUI32         0x0155
#define CB_SETEXTENDEDUI           WINELIB_NAME(CB_SETEXTENDEDUI)
#define CB_GETEXTENDEDUI16         (WM_USER+22)
#define CB_GETEXTENDEDUI32         0x0156
#define CB_GETEXTENDEDUI           WINELIB_NAME(CB_GETEXTENDEDUI)
#define CB_GETDROPPEDSTATE16       (WM_USER+23)
#define CB_GETDROPPEDSTATE32       0x0157
#define CB_GETDROPPEDSTATE         WINELIB_NAME(CB_GETDROPPEDSTATE)
#define CB_FINDSTRINGEXACT16       (WM_USER+24)
#define CB_FINDSTRINGEXACT32       0x0158
#define CB_FINDSTRINGEXACT         WINELIB_NAME(CB_FINDSTRINGEXACT)
#define CB_SETLOCALE16             WM_NULL  /* Not in Win16 */
#define CB_SETLOCALE32             0x0159
#define CB_SETLOCALE               WINELIB_NAME(CB_SETLOCALE)
#define CB_GETLOCALE16             WM_NULL  /* Not in Win16 */
#define CB_GETLOCALE32             0x015a
#define CB_GETLOCALE               WINELIB_NAME(CB_GETLOCALE)
#define CB_GETTOPINDEX16           WM_NULL  /* Not in Win16 */
#define CB_GETTOPINDEX32           0x015b
#define CB_GETTOPINDEX             WINELIB_NAME(CB_GETTOPINDEX)
#define CB_SETTOPINDEX16           WM_NULL  /* Not in Win16 */
#define CB_SETTOPINDEX32           0x015c
#define CB_SETTOPINDEX             WINELIB_NAME(CB_SETTOPINDEX)
#define CB_GETHORIZONTALEXTENT16   WM_NULL  /* Not in Win16 */
#define CB_GETHORIZONTALEXTENT32   0x015d
#define CB_GETHORIZONTALEXTENT     WINELIB_NAME(CB_GETHORIZONTALEXTENT)
#define CB_SETHORIZONTALEXTENT16   WM_NULL  /* Not in Win16 */
#define CB_SETHORIZONTALEXTENT32   0x015e
#define CB_SETHORIZONTALEXTENT     WINELIB_NAME(CB_SETHORIZONTALEXTENT)
#define CB_GETDROPPEDWIDTH16       WM_NULL  /* Not in Win16 */
#define CB_GETDROPPEDWIDTH32       0x015f
#define CB_GETDROPPEDWIDTH         WINELIB_NAME(CB_GETDROPPEDWIDTH)
#define CB_SETDROPPEDWIDTH16       WM_NULL  /* Not in Win16 */
#define CB_SETDROPPEDWIDTH32       0x0160
#define CB_SETDROPPEDWIDTH         WINELIB_NAME(CB_SETDROPPEDWIDTH)
#define CB_INITSTORAGE16           WM_NULL  /* Not in Win16 */
#define CB_INITSTORAGE32           0x0161
#define CB_INITSTORAGE             WINELIB_NAME(CB_INITSTORAGE)

/* Combo box notification codes */
#define CBN_ERRSPACE        (-1)
#define CBN_SELCHANGE       1
#define CBN_DBLCLK          2
#define CBN_SETFOCUS        3
#define CBN_KILLFOCUS       4
#define CBN_EDITCHANGE      5
#define CBN_EDITUPDATE      6
#define CBN_DROPDOWN        7
#define CBN_CLOSEUP         8
#define CBN_SELENDOK        9
#define CBN_SELENDCANCEL    10

/* Combo box message return values */
#define CB_OKAY             0
#define CB_ERR              (-1)
#define CB_ERRSPACE         (-2)


/* Owner draw control types */
#define ODT_MENU        1
#define ODT_LISTBOX     2
#define ODT_COMBOBOX    3
#define ODT_BUTTON      4

/* Owner draw actions */
#define ODA_DRAWENTIRE  0x0001
#define ODA_SELECT      0x0002
#define ODA_FOCUS       0x0004

/* Owner draw state */
#define ODS_SELECTED    0x0001
#define ODS_GRAYED      0x0002
#define ODS_DISABLED    0x0004
#define ODS_CHECKED     0x0008
#define ODS_FOCUS       0x0010

/* Edit control styles */
#define ES_LEFT         0x00000000
#define ES_CENTER       0x00000001
#define ES_RIGHT        0x00000002
#define ES_MULTILINE    0x00000004
#define ES_UPPERCASE    0x00000008
#define ES_LOWERCASE    0x00000010
#define ES_PASSWORD     0x00000020
#define ES_AUTOVSCROLL  0x00000040
#define ES_AUTOHSCROLL  0x00000080
#define ES_NOHIDESEL    0x00000100
#define ES_OEMCONVERT   0x00000400
#define ES_READONLY     0x00000800
#define ES_WANTRETURN   0x00001000
#define ES_NUMBER       0x00002000

/* Edit control messages */
#define EM_GETSEL16                (WM_USER+0)
#define EM_GETSEL32                0x00b0
#define EM_GETSEL                  WINELIB_NAME(EM_GETSEL)
#define EM_SETSEL16                (WM_USER+1)
#define EM_SETSEL32                0x00b1
#define EM_SETSEL                  WINELIB_NAME(EM_SETSEL)
#define EM_GETRECT16               (WM_USER+2)
#define EM_GETRECT32               0x00b2
#define EM_GETRECT                 WINELIB_NAME(EM_GETRECT)
#define EM_SETRECT16               (WM_USER+3)
#define EM_SETRECT32               0x00b3
#define EM_SETRECT                 WINELIB_NAME(EM_SETRECT)
#define EM_SETRECTNP16             (WM_USER+4)
#define EM_SETRECTNP32             0x00b4
#define EM_SETRECTNP               WINELIB_NAME(EM_SETRECTNP)
#define EM_SCROLL16                (WM_USER+5)
#define EM_SCROLL32                0x00b5
#define EM_SCROLL                  WINELIB_NAME(EM_SCROLL)
#define EM_LINESCROLL16            (WM_USER+6)
#define EM_LINESCROLL32            0x00b6
#define EM_LINESCROLL              WINELIB_NAME(EM_LINESCROLL)
#define EM_SCROLLCARET16           (WM_USER+7)
#define EM_SCROLLCARET32           0x00b7
#define EM_SCROLLCARET             WINELIB_NAME(EM_SCROLLCARET)
#define EM_GETMODIFY16             (WM_USER+8)
#define EM_GETMODIFY32             0x00b8
#define EM_GETMODIFY               WINELIB_NAME(EM_GETMODIFY)
#define EM_SETMODIFY16             (WM_USER+9)
#define EM_SETMODIFY32             0x00b9
#define EM_SETMODIFY               WINELIB_NAME(EM_SETMODIFY)
#define EM_GETLINECOUNT16          (WM_USER+10)
#define EM_GETLINECOUNT32          0x00ba
#define EM_GETLINECOUNT            WINELIB_NAME(EM_GETLINECOUNT)
#define EM_LINEINDEX16             (WM_USER+11)
#define EM_LINEINDEX32             0x00bb
#define EM_LINEINDEX               WINELIB_NAME(EM_LINEINDEX)
#define EM_SETHANDLE16             (WM_USER+12)
#define EM_SETHANDLE32             0x00bc
#define EM_SETHANDLE               WINELIB_NAME(EM_SETHANDLE)
#define EM_GETHANDLE16             (WM_USER+13)
#define EM_GETHANDLE32             0x00bd
#define EM_GETHANDLE               WINELIB_NAME(EM_GETHANDLE)
#define EM_GETTHUMB16              (WM_USER+14)
#define EM_GETTHUMB32              0x00be
#define EM_GETTHUMB                WINELIB_NAME(EM_GETTHUMB)
/* FIXME : missing from specs 0x00bf and 0x00c0 */
#define EM_LINELENGTH16            (WM_USER+17)
#define EM_LINELENGTH32            0x00c1
#define EM_LINELENGTH              WINELIB_NAME(EM_LINELENGTH)
#define EM_REPLACESEL16            (WM_USER+18)
#define EM_REPLACESEL32            0x00c2
#define EM_REPLACESEL              WINELIB_NAME(EM_REPLACESEL)
/* FIXME : missing from specs 0x00c3 */
#define EM_GETLINE16               (WM_USER+20)
#define EM_GETLINE32               0x00c4
#define EM_GETLINE                 WINELIB_NAME(EM_GETLINE)
#define EM_LIMITTEXT16             (WM_USER+21)
#define EM_LIMITTEXT32             0x00c5
#define EM_LIMITTEXT               WINELIB_NAME(EM_LIMITTEXT)
#define EM_CANUNDO16               (WM_USER+22)
#define EM_CANUNDO32               0x00c6
#define EM_CANUNDO                 WINELIB_NAME(EM_CANUNDO)
#define EM_UNDO16                  (WM_USER+23)
#define EM_UNDO32                  0x00c7
#define EM_UNDO                    WINELIB_NAME(EM_UNDO)
#define EM_FMTLINES16              (WM_USER+24)
#define EM_FMTLINES32              0x00c8
#define EM_FMTLINES                WINELIB_NAME(EM_FMTLINES)
#define EM_LINEFROMCHAR16          (WM_USER+25)
#define EM_LINEFROMCHAR32          0x00c9
#define EM_LINEFROMCHAR            WINELIB_NAME(EM_LINEFROMCHAR)
/* FIXME : missing from specs 0x00ca */
#define EM_SETTABSTOPS16           (WM_USER+27)
#define EM_SETTABSTOPS32           0x00cb
#define EM_SETTABSTOPS             WINELIB_NAME(EM_SETTABSTOPS)
#define EM_SETPASSWORDCHAR16       (WM_USER+28)
#define EM_SETPASSWORDCHAR32       0x00cc
#define EM_SETPASSWORDCHAR         WINELIB_NAME(EM_SETPASSWORDCHAR)
#define EM_EMPTYUNDOBUFFER16       (WM_USER+29)
#define EM_EMPTYUNDOBUFFER32       0x00cd
#define EM_EMPTYUNDOBUFFER         WINELIB_NAME(EM_EMPTYUNDOBUFFER)
#define EM_GETFIRSTVISIBLELINE16   (WM_USER+30)
#define EM_GETFIRSTVISIBLELINE32   0x00ce
#define EM_GETFIRSTVISIBLELINE     WINELIB_NAME(EM_GETFIRSTVISIBLELINE)
#define EM_SETREADONLY16           (WM_USER+31)
#define EM_SETREADONLY32           0x00cf
#define EM_SETREADONLY             WINELIB_NAME(EM_SETREADONLY)
#define EM_SETWORDBREAKPROC16      (WM_USER+32)
#define EM_SETWORDBREAKPROC32      0x00d0
#define EM_SETWORDBREAKPROC        WINELIB_NAME(EM_SETWORDBREAKPROC)
#define EM_GETWORDBREAKPROC16      (WM_USER+33)
#define EM_GETWORDBREAKPROC32      0x00d1
#define EM_GETWORDBREAKPROC        WINELIB_NAME(EM_GETWORDBREAKPROC)
#define EM_GETPASSWORDCHAR16       (WM_USER+34)
#define EM_GETPASSWORDCHAR32       0x00d2
#define EM_GETPASSWORDCHAR         WINELIB_NAME(EM_GETPASSWORDCHAR)
#define EM_SETMARGINS16            WM_NULL /* not in win16 */
#define EM_SETMARGINS32            0x00d3
#define EM_SETMARGINS              WINELIB_NAME(EM_SETMARGINS)
#define EM_GETMARGINS16            WM_NULL /* not in win16 */
#define EM_GETMARGINS32            0x00d4
#define EM_GETMARGINS              WINELIB_NAME(EM_GETMARGINS)
#define EM_GETLIMITTEXT16          WM_NULL /* not in win16 */
#define EM_GETLIMITTEXT32          0x00d5
#define EM_GETLIMITTEXT            WINELIB_NAME(EM_GETLIMITTEXT)
#define EM_POSFROMCHAR16           WM_NULL /* not in win16 */
#define EM_POSFROMCHAR32           0x00d6
#define EM_POSFROMCHAR             WINELIB_NAME(EM_POSFROMCHAR)
#define EM_CHARFROMPOS16           WM_NULL /* not in win16 */
#define EM_CHARFROMPOS32           0x00d7
#define EM_CHARFROMPOS             WINELIB_NAME(EM_CHARFROMPOS)
/* a name change since win95 */
#define EM_SETLIMITTEXT16          WM_NULL /* no name change in win16 */
#define EM_SETLIMITTEXT32          EM_LIMITTEXT32
#define EM_SETLIMITTEXT            WINELIB_NAME(EM_SETLIMITTEXT)

/* EDITWORDBREAKPROC code values */
#define WB_LEFT         0
#define WB_RIGHT        1
#define WB_ISDELIMITER  2

/* Edit control notification codes */
#define EN_SETFOCUS     0x0100
#define EN_KILLFOCUS    0x0200
#define EN_CHANGE       0x0300
#define EN_UPDATE       0x0400
#define EN_ERRSPACE     0x0500
#define EN_MAXTEXT      0x0501
#define EN_HSCROLL      0x0601
#define EN_VSCROLL      0x0602

/* New since win95 : EM_SETMARGIN parameters */
#define EC_LEFTMARGIN	0x0001
#define EC_RIGHTMARGIN	0x0002
#define EC_USEFONTINFO	0xffff


typedef struct
{
    UINT16      CtlType;
    UINT16      CtlID;
    UINT16      itemID;
    UINT16      itemAction;
    UINT16      itemState;
    HWND16      hwndItem;
    HDC16       hDC;
    RECT16      rcItem WINE_PACKED;
    DWORD       itemData WINE_PACKED;
} DRAWITEMSTRUCT16, *PDRAWITEMSTRUCT16, *LPDRAWITEMSTRUCT16;

typedef struct
{
    UINT32      CtlType;
    UINT32      CtlID;
    UINT32      itemID;
    UINT32      itemAction;
    UINT32      itemState;
    HWND32      hwndItem;
    HDC32       hDC;
    RECT32      rcItem WINE_PACKED;
    DWORD       itemData WINE_PACKED;
} DRAWITEMSTRUCT32, *PDRAWITEMSTRUCT32, *LPDRAWITEMSTRUCT32;

DECL_WINELIB_TYPE(DRAWITEMSTRUCT);
DECL_WINELIB_TYPE(PDRAWITEMSTRUCT);
DECL_WINELIB_TYPE(LPDRAWITEMSTRUCT);

typedef struct
{
    UINT16      CtlType;
    UINT16      CtlID;
    UINT16      itemID;
    UINT16      itemWidth;
    UINT16      itemHeight;
    DWORD       itemData WINE_PACKED;
} MEASUREITEMSTRUCT16, *PMEASUREITEMSTRUCT16, *LPMEASUREITEMSTRUCT16;

typedef struct
{
    UINT32      CtlType;
    UINT32      CtlID;
    UINT32      itemID;
    UINT32      itemWidth;
    UINT32      itemHeight;
    DWORD       itemData;
} MEASUREITEMSTRUCT32, *PMEASUREITEMSTRUCT32, *LPMEASUREITEMSTRUCT32;

DECL_WINELIB_TYPE(MEASUREITEMSTRUCT);
DECL_WINELIB_TYPE(PMEASUREITEMSTRUCT);
DECL_WINELIB_TYPE(LPMEASUREITEMSTRUCT);

typedef struct
{
    UINT16     CtlType;
    UINT16     CtlID;
    UINT16     itemID;
    HWND16     hwndItem;
    DWORD      itemData;
} DELETEITEMSTRUCT16, *LPDELETEITEMSTRUCT16;

typedef struct
{
    UINT32     CtlType;
    UINT32     CtlID;
    UINT32     itemID;
    HWND32     hwndItem;
    DWORD      itemData;
} DELETEITEMSTRUCT32, *LPDELETEITEMSTRUCT32;

DECL_WINELIB_TYPE(DELETEITEMSTRUCT);
DECL_WINELIB_TYPE(LPDELETEITEMSTRUCT);

typedef struct
{
    UINT16      CtlType;
    UINT16      CtlID;
    HWND16      hwndItem;
    UINT16      itemID1;
    DWORD       itemData1;
    UINT16      itemID2;
    DWORD       itemData2 WINE_PACKED;
} COMPAREITEMSTRUCT16, *LPCOMPAREITEMSTRUCT16;

typedef struct
{
    UINT32      CtlType;
    UINT32      CtlID;
    HWND32      hwndItem;
    UINT32      itemID1;
    DWORD       itemData1;
    UINT32      itemID2;
    DWORD       itemData2;
    DWORD       dwLocaleId;
} COMPAREITEMSTRUCT32, *LPCOMPAREITEMSTRUCT32;

DECL_WINELIB_TYPE(COMPAREITEMSTRUCT);
DECL_WINELIB_TYPE(LPCOMPAREITEMSTRUCT);

/* WM_KEYUP/DOWN/CHAR HIWORD(lParam) flags */
#define KF_EXTENDED         0x0100
#define KF_DLGMODE          0x0800
#define KF_MENUMODE         0x1000
#define KF_ALTDOWN          0x2000
#define KF_REPEAT           0x4000
#define KF_UP               0x8000

/* Virtual key codes */
#define VK_LBUTTON          0x01
#define VK_RBUTTON          0x02
#define VK_CANCEL           0x03
#define VK_MBUTTON          0x04
/*                          0x05-0x07  Undefined */
#define VK_BACK             0x08
#define VK_TAB              0x09
/*                          0x0A-0x0B  Undefined */
#define VK_CLEAR            0x0C
#define VK_RETURN           0x0D
/*                          0x0E-0x0F  Undefined */
#define VK_SHIFT            0x10
#define VK_CONTROL          0x11
#define VK_MENU             0x12
#define VK_PAUSE            0x13
#define VK_CAPITAL          0x14
/*                          0x15-0x19  Reserved for Kanji systems */
/*                          0x1A       Undefined */
#define VK_ESCAPE           0x1B
/*                          0x1C-0x1F  Reserved for Kanji systems */
#define VK_SPACE            0x20
#define VK_PRIOR            0x21
#define VK_NEXT             0x22
#define VK_END              0x23
#define VK_HOME             0x24
#define VK_LEFT             0x25
#define VK_UP               0x26
#define VK_RIGHT            0x27
#define VK_DOWN             0x28
#define VK_SELECT           0x29
#define VK_PRINT            0x2A /* OEM specific in Windows 3.1 SDK */
#define VK_EXECUTE          0x2B
#define VK_SNAPSHOT         0x2C
#define VK_INSERT           0x2D
#define VK_DELETE           0x2E
#define VK_HELP             0x2F
#define VK_0                0x30
#define VK_1                0x31
#define VK_2                0x32
#define VK_3                0x33
#define VK_4                0x34
#define VK_5                0x35
#define VK_6                0x36
#define VK_7                0x37
#define VK_8                0x38
#define VK_9                0x39
/*                          0x3A-0x40  Undefined */
#define VK_A                0x41
#define VK_B                0x42
#define VK_C                0x43
#define VK_D                0x44
#define VK_E                0x45
#define VK_F                0x46
#define VK_G                0x47
#define VK_H                0x48
#define VK_I                0x49
#define VK_J                0x4A
#define VK_K                0x4B
#define VK_L                0x4C
#define VK_M                0x4D
#define VK_N                0x4E
#define VK_O                0x4F
#define VK_P                0x50
#define VK_Q                0x51
#define VK_R                0x52
#define VK_S                0x53
#define VK_T                0x54
#define VK_U                0x55
#define VK_V                0x56
#define VK_W                0x57
#define VK_X                0x58
#define VK_Y                0x59
#define VK_Z                0x5A

#define VK_LWIN             0x5B
#define VK_RWIN             0x5C
#define VK_APPS             0x5D
/*                          0x5E-0x5F Unassigned */
#define VK_NUMPAD0          0x60
#define VK_NUMPAD1          0x61
#define VK_NUMPAD2          0x62
#define VK_NUMPAD3          0x63
#define VK_NUMPAD4          0x64
#define VK_NUMPAD5          0x65
#define VK_NUMPAD6          0x66
#define VK_NUMPAD7          0x67
#define VK_NUMPAD8          0x68
#define VK_NUMPAD9          0x69
#define VK_MULTIPLY         0x6A
#define VK_ADD              0x6B
#define VK_SEPARATOR        0x6C
#define VK_SUBTRACT         0x6D
#define VK_DECIMAL          0x6E
#define VK_DIVIDE           0x6F
#define VK_F1               0x70
#define VK_F2               0x71
#define VK_F3               0x72
#define VK_F4               0x73
#define VK_F5               0x74
#define VK_F6               0x75
#define VK_F7               0x76
#define VK_F8               0x77
#define VK_F9               0x78
#define VK_F10              0x79
#define VK_F11              0x7A
#define VK_F12              0x7B
#define VK_F13              0x7C
#define VK_F14              0x7D
#define VK_F15              0x7E
#define VK_F16              0x7F
#define VK_F17              0x80
#define VK_F18              0x81
#define VK_F19              0x82
#define VK_F20              0x83
#define VK_F21              0x84
#define VK_F22              0x85
#define VK_F23              0x86
#define VK_F24              0x87
/*                          0x88-0x8F  Unassigned */
#define VK_NUMLOCK          0x90
#define VK_SCROLL           0x91
/*                          0x92-0x9F  Unassigned */
/*
 * differencing between right and left shift/control/alt key.
 * Used only by GetAsyncKeyState() and GetKeyState().
 */
#define VK_LSHIFT           0xA0
#define VK_RSHIFT           0xA1
#define VK_LCONTROL         0xA2
#define VK_RCONTROL         0xA3
#define VK_LMENU            0xA4
#define VK_RMENU            0xA5
/*                          0xA6-0xB9  Unassigned */
/*                          0xBA-0xC0  OEM specific */
/*                          0xC1-0xDA  Unassigned */
/*                          0xDB-0xE4  OEM specific */

#define VK_PROCESSKEY       0xE5

/*                          0xE6       OEM specific */
/*                          0xE7-0xE8  Unassigned */
/*                          0xE9-0xF5  OEM specific */

#define VK_ATTN             0xF6
#define VK_CRSEL            0xF7
#define VK_EXSEL            0xF8
#define VK_EREOF            0xF9
#define VK_PLAY             0xFA
#define VK_ZOOM             0xFB
#define VK_NONAME           0xFC
#define VK_PA1              0xFD
#define VK_OEM_CLEAR        0xFE
  
#define LMEM_FIXED          0   
#define LMEM_MOVEABLE       0x0002
#define LMEM_NOCOMPACT      0x0010
#define LMEM_NODISCARD      0x0020
#define LMEM_ZEROINIT       0x0040
#define LMEM_MODIFY         0x0080
#define LMEM_DISCARDABLE    0x0F00
#define LMEM_DISCARDED	    0x4000
#define LMEM_LOCKCOUNT	    0x00FF

#define GMEM_FIXED          0x0000
#define GMEM_MOVEABLE       0x0002
#define GMEM_NOCOMPACT      0x0010
#define GMEM_NODISCARD      0x0020
#define GMEM_ZEROINIT       0x0040
#define GMEM_MODIFY         0x0080
#define GMEM_DISCARDABLE    0x0100
#define GMEM_NOT_BANKED     0x1000
#define GMEM_SHARE          0x2000
#define GMEM_DDESHARE       0x2000
#define GMEM_NOTIFY         0x4000
#define GMEM_LOWER          GMEM_NOT_BANKED
#define GMEM_DISCARDED      0x4000
#define GMEM_LOCKCOUNT      0x00ff
#define GMEM_INVALID_HANDLE 0x8000

#define GHND                (GMEM_MOVEABLE | GMEM_ZEROINIT)
#define GPTR                (GMEM_FIXED | GMEM_ZEROINIT)


typedef struct tagMEMORYSTATUS
{
    DWORD    dwLength;
    DWORD    dwMemoryLoad;
    DWORD    dwTotalPhys;
    DWORD    dwAvailPhys;
    DWORD    dwTotalPageFile;
    DWORD    dwAvailPageFile;
    DWORD    dwTotalVirtual;
    DWORD    dwAvailVirtual;
} MEMORYSTATUS, *LPMEMORYSTATUS;

/* Predefined Clipboard Formats */
#define CF_TEXT              1
#define CF_BITMAP            2
#define CF_METAFILEPICT      3
#define CF_SYLK              4
#define CF_DIF               5
#define CF_TIFF              6
#define CF_OEMTEXT           7
#define CF_DIB               8
#define CF_PALETTE           9
#define CF_PENDATA          10
#define CF_RIFF             11
#define CF_WAVE             12

#define CF_OWNERDISPLAY     0x0080
#define CF_DSPTEXT          0x0081
#define CF_DSPBITMAP        0x0082
#define CF_DSPMETAFILEPICT  0x0083

/* "Private" formats don't get GlobalFree()'d */
#define CF_PRIVATEFIRST     0x0200
#define CF_PRIVATELAST      0x02FF

/* "GDIOBJ" formats do get DeleteObject()'d */
#define CF_GDIOBJFIRST      0x0300
#define CF_GDIOBJLAST       0x03FF

/* Clipboard command messages */
#define WM_CUT              0x0300
#define WM_COPY             0x0301
#define WM_PASTE            0x0302
#define WM_CLEAR            0x0303
#define WM_UNDO             0x0304

/* Clipboard owner messages */
#define WM_RENDERFORMAT     0x0305
#define WM_RENDERALLFORMATS 0x0306
#define WM_DESTROYCLIPBOARD 0x0307

/* Clipboard viewer messages */
#define WM_DRAWCLIPBOARD    0x0308
#define WM_PAINTCLIPBOARD   0x0309
#define WM_SIZECLIPBOARD    0x030B
#define WM_VSCROLLCLIPBOARD 0x030A
#define WM_HSCROLLCLIPBOARD 0x030E
#define WM_ASKCBFORMATNAME  0x030C
#define WM_CHANGECBCHAIN    0x030D

/* Metafile header structure */
typedef struct
{
    WORD       mtType;
    WORD       mtHeaderSize;
    WORD       mtVersion;
    DWORD      mtSize WINE_PACKED;
    WORD       mtNoObjects;
    DWORD      mtMaxRecord WINE_PACKED;
    WORD       mtNoParameters;
} METAHEADER;

/* Metafile typical record structure */
typedef struct
{
    DWORD      rdSize;
    WORD       rdFunction;
    WORD       rdParam[1];
} METARECORD;
typedef METARECORD *PMETARECORD;
typedef METARECORD *LPMETARECORD;

/* Handle table structure */

typedef struct
{
    HGDIOBJ16 objectHandle[1];
} HANDLETABLE16, *LPHANDLETABLE16;

typedef struct
{
    HGDIOBJ32 objectHandle[1];
} HANDLETABLE32, *LPHANDLETABLE32;

DECL_WINELIB_TYPE(HANDLETABLE);
DECL_WINELIB_TYPE(LPHANDLETABLE);

/* Clipboard metafile picture structure */
typedef struct
{
    INT16        mm;
    INT16        xExt;
    INT16        yExt;
    HMETAFILE16  hMF;
} METAFILEPICT16, *LPMETAFILEPICT16;

typedef struct
{
    INT32        mm;
    INT32        xExt;
    INT32        yExt;
    HMETAFILE32  hMF;
} METAFILEPICT32, *LPMETAFILEPICT32;

DECL_WINELIB_TYPE(METAFILEPICT);
DECL_WINELIB_TYPE(LPMETAFILEPICT);

/* Metafile functions */
#define META_SETBKCOLOR              0x0201
#define META_SETBKMODE               0x0102
#define META_SETMAPMODE              0x0103
#define META_SETROP2                 0x0104
#define META_SETRELABS               0x0105
#define META_SETPOLYFILLMODE         0x0106
#define META_SETSTRETCHBLTMODE       0x0107
#define META_SETTEXTCHAREXTRA        0x0108
#define META_SETTEXTCOLOR            0x0209
#define META_SETTEXTJUSTIFICATION    0x020A
#define META_SETWINDOWORG            0x020B
#define META_SETWINDOWEXT            0x020C
#define META_SETVIEWPORTORG          0x020D
#define META_SETVIEWPORTEXT          0x020E
#define META_OFFSETWINDOWORG         0x020F
#define META_SCALEWINDOWEXT          0x0410
#define META_OFFSETVIEWPORTORG       0x0211
#define META_SCALEVIEWPORTEXT        0x0412
#define META_LINETO                  0x0213
#define META_MOVETO                  0x0214
#define META_EXCLUDECLIPRECT         0x0415
#define META_INTERSECTCLIPRECT       0x0416
#define META_ARC                     0x0817
#define META_ELLIPSE                 0x0418
#define META_FLOODFILL               0x0419
#define META_PIE                     0x081A
#define META_RECTANGLE               0x041B
#define META_ROUNDRECT               0x061C
#define META_PATBLT                  0x061D
#define META_SAVEDC                  0x001E
#define META_SETPIXEL                0x041F
#define META_OFFSETCLIPRGN           0x0220
#define META_TEXTOUT                 0x0521
#define META_BITBLT                  0x0922
#define META_STRETCHBLT              0x0B23
#define META_POLYGON                 0x0324
#define META_POLYLINE                0x0325
#define META_ESCAPE                  0x0626
#define META_RESTOREDC               0x0127
#define META_FILLREGION              0x0228
#define META_FRAMEREGION             0x0429
#define META_INVERTREGION            0x012A
#define META_PAINTREGION             0x012B
#define META_SELECTCLIPREGION        0x012C
#define META_SELECTOBJECT            0x012D
#define META_SETTEXTALIGN            0x012E
#define META_DRAWTEXT                0x062F
#define META_CHORD                   0x0830
#define META_SETMAPPERFLAGS          0x0231
#define META_EXTTEXTOUT              0x0A32
#define META_SETDIBTODEV             0x0D33
#define META_SELECTPALETTE           0x0234
#define META_REALIZEPALETTE          0x0035
#define META_ANIMATEPALETTE          0x0436
#define META_SETPALENTRIES           0x0037
#define META_POLYPOLYGON             0x0538
#define META_RESIZEPALETTE           0x0139
#define META_DIBBITBLT               0x0940
#define META_DIBSTRETCHBLT           0x0B41
#define META_DIBCREATEPATTERNBRUSH   0x0142
#define META_STRETCHDIB              0x0F43
#define META_EXTFLOODFILL            0x0548
#define META_RESETDC                 0x014C
#define META_STARTDOC                0x014D
#define META_STARTPAGE               0x004F
#define META_ENDPAGE                 0x0050
#define META_ABORTDOC                0x0052
#define META_ENDDOC                  0x005E
#define META_DELETEOBJECT            0x01F0
#define META_CREATEPALETTE           0x00F7
#define META_CREATEBRUSH             0x00F8
#define META_CREATEPATTERNBRUSH      0x01F9
#define META_CREATEPENINDIRECT       0x02FA
#define META_CREATEFONTINDIRECT      0x02FB
#define META_CREATEBRUSHINDIRECT     0x02FC
#define META_CREATEBITMAPINDIRECT    0x02FD
#define META_CREATEBITMAP            0x06FE
#define META_CREATEREGION            0x06FF

typedef INT16 (*MFENUMPROC16)(HDC16,HANDLETABLE16*,METARECORD*,INT16,LPARAM);
typedef INT32 (*MFENUMPROC32)(HDC32,HANDLETABLE32*,METARECORD*,INT32,LPARAM);
DECL_WINELIB_TYPE(MFENUMPROC);

/* Debugging support (DEBUG SYSTEM ONLY) */
typedef struct
{
    UINT16  flags;
    DWORD   dwOptions WINE_PACKED;
    DWORD   dwFilter WINE_PACKED;
    CHAR    achAllocModule[8] WINE_PACKED;
    DWORD   dwAllocBreak WINE_PACKED;
    DWORD   dwAllocCount WINE_PACKED;
} WINDEBUGINFO, *LPWINDEBUGINFO;

/* WINDEBUGINFO flags values */
#define WDI_OPTIONS         0x0001
#define WDI_FILTER          0x0002
#define WDI_ALLOCBREAK      0x0004

/* dwOptions values */
#define DBO_CHECKHEAP       0x0001
#define DBO_BUFFERFILL      0x0004
#define DBO_DISABLEGPTRAPPING 0x0010
#define DBO_CHECKFREE       0x0020

#define DBO_SILENT          0x8000

#define DBO_TRACEBREAK      0x2000
#define DBO_WARNINGBREAK    0x1000
#define DBO_NOERRORBREAK    0x0800
#define DBO_NOFATALBREAK    0x0400
#define DBO_INT3BREAK       0x0100

/* DebugOutput flags values */
#define DBF_TRACE           0x0000
#define DBF_WARNING         0x4000
#define DBF_ERROR           0x8000
#define DBF_FATAL           0xc000

/* dwFilter values */
#define DBF_KERNEL          0x1000
#define DBF_KRN_MEMMAN      0x0001
#define DBF_KRN_LOADMODULE  0x0002
#define DBF_KRN_SEGMENTLOAD 0x0004
#define DBF_USER            0x0800
#define DBF_GDI             0x0400
#define DBF_MMSYSTEM        0x0040
#define DBF_PENWIN          0x0020
#define DBF_APPLICATION     0x0008
#define DBF_DRIVER          0x0010

/* Win32-specific structures */

typedef struct {
    DWORD dwData;
    DWORD cbData;
    LPVOID lpData;
} COPYDATASTRUCT, *PCOPYDATASTRUCT, *LPCOPYDATASTRUCT;

typedef struct {
    HMENU32 hmenuIn;
    HMENU32 hmenuNext;
    HWND32  hwndNext;
} MDINEXTMENU, *PMDINEXTMENU, *LPMDINEXTMENU;

typedef struct {
        WORD wYear;
        WORD wMonth;
        WORD wDayOfWeek;
        WORD wDay;
        WORD wHour;
        WORD wMinute;
        WORD wSecond;
        WORD wMilliseconds;
} SYSTEMTIME, *LPSYSTEMTIME;


/* Code page information.
 */
#define MAX_LEADBYTES     12
#define MAX_DEFAULTCHAR   2

typedef struct
{
    UINT32 MaxCharSize;
    BYTE   DefaultChar[MAX_DEFAULTCHAR];
    BYTE   LeadByte[MAX_LEADBYTES];
} CPINFO, *LPCPINFO;

/* The 'overlapped' data structure used by async I/O functions.
 */
typedef struct {
        DWORD Internal;
        DWORD InternalHigh;
        DWORD Offset;
        DWORD OffsetHigh;
        HANDLE32 hEvent;
} OVERLAPPED, *LPOVERLAPPED;

/* Process startup information.
 */
typedef struct {
        DWORD cb;
        LPSTR lpReserved;
        LPSTR lpDesktop;
        LPSTR lpTitle;
        DWORD dwX;
        DWORD dwY;
        DWORD dwXSize;
        DWORD dwYSize;
        DWORD dwXCountChars;
        DWORD dwYCountChars;
        DWORD dwFillAttribute;
        DWORD dwFlags;
        WORD wShowWindow;
        WORD cbReserved2;
        BYTE *lpReserved2;
        HANDLE32 hStdInput;
        HANDLE32 hStdOutput;
        HANDLE32 hStdError;
} STARTUPINFO32A, *LPSTARTUPINFO32A;

typedef struct {
        DWORD cb;
        LPWSTR lpReserved;
        LPWSTR lpDesktop;
        LPWSTR lpTitle;
        DWORD dwX;
        DWORD dwY;
        DWORD dwXSize;
        DWORD dwYSize;
        DWORD dwXCountChars;
        DWORD dwYCountChars;
        DWORD dwFillAttribute;
        DWORD dwFlags;
        WORD wShowWindow;
        WORD cbReserved2;
        BYTE *lpReserved2;
        HANDLE32 hStdInput;
        HANDLE32 hStdOutput;
        HANDLE32 hStdError;
} STARTUPINFO32W, *LPSTARTUPINFO32W;

DECL_WINELIB_TYPE_AW(STARTUPINFO);
DECL_WINELIB_TYPE_AW(LPSTARTUPINFO);

typedef struct {
	HANDLE32	hProcess;
	HANDLE32	hThread;
	DWORD		dwProcessId;
	DWORD		dwThreadId;
} PROCESS_INFORMATION,*LPPROCESS_INFORMATION;

typedef struct {
        LONG Bias;
        WCHAR StandardName[32];
        SYSTEMTIME StandardDate;
        LONG StandardBias;
        WCHAR DaylightName[32];
        SYSTEMTIME DaylightDate;
        LONG DaylightBias;
} TIME_ZONE_INFORMATION, *LPTIME_ZONE_INFORMATION;

#define TIME_ZONE_ID_UNKNOWN    0
#define TIME_ZONE_ID_STANDARD   1
#define TIME_ZONE_ID_DAYLIGHT   2


/* File object type definitions
 */
#define FILE_TYPE_UNKNOWN       0
#define FILE_TYPE_DISK          1
#define FILE_TYPE_CHAR          2
#define FILE_TYPE_PIPE          3
#define FILE_TYPE_REMOTE        32768

/* File creation flags
 */
#define GENERIC_READ            0x80000000L
#define GENERIC_WRITE           0x40000000L
#define CREATE_NEW              1
#define CREATE_ALWAYS           2
#define OPEN_EXISTING           3
#define OPEN_ALWAYS             4
#define TRUNCATE_EXISTING       5

/* Standard handle identifiers
 */
#define STD_INPUT_HANDLE        ((DWORD) -10)
#define STD_OUTPUT_HANDLE       ((DWORD) -11)
#define STD_ERROR_HANDLE        ((DWORD) -12)

typedef struct
{
  int dwFileAttributes;
  FILETIME ftCreationTime;
  FILETIME ftLastAccessTime;
  FILETIME ftLastWriteTime;
  int dwVolumeSerialNumber;
  int nFileSizeHigh;
  int nFileSizeLow;
  int nNumberOfLinks;
  int nFileIndexHigh;
  int nFileIndexLow;
} BY_HANDLE_FILE_INFORMATION ;

/* File attribute flags
 */
#define FILE_ATTRIBUTE_READONLY         0x0001
#define FILE_ATTRIBUTE_HIDDEN           0x0002
#define FILE_ATTRIBUTE_SYSTEM           0x0004
#define FILE_ATTRIBUTE_LABEL            0x0008  /* Not in Windows API */
#define FILE_ATTRIBUTE_DIRECTORY        0x0010
#define FILE_ATTRIBUTE_ARCHIVE          0x0020
#define FILE_ATTRIBUTE_NORMAL           0x0080
#define FILE_ATTRIBUTE_TEMPORARY        0x0100
#define FILE_ATTRIBUTE_ATOMIC_WRITE     0x0200
#define FILE_ATTRIBUTE_XACTION_WRITE    0x0400
#define FILE_ATTRIBUTE_COMPRESSED       0x0800

/* File alignments (NT) */
#define	FILE_BYTE_ALIGNMENT		0x00000000
#define	FILE_WORD_ALIGNMENT		0x00000001
#define	FILE_LONG_ALIGNMENT		0x00000003
#define	FILE_QUAD_ALIGNMENT		0x00000007
#define	FILE_OCTA_ALIGNMENT		0x0000000f
#define	FILE_32_BYTE_ALIGNMENT		0x0000001f
#define	FILE_64_BYTE_ALIGNMENT		0x0000003f
#define	FILE_128_BYTE_ALIGNMENT		0x0000007f
#define	FILE_256_BYTE_ALIGNMENT		0x000000ff
#define	FILE_512_BYTE_ALIGNMENT		0x000001ff

/* WinHelp internal structure */
typedef struct {
	WORD size;
	WORD command;
	LONG data;
	LONG reserved;
	WORD ofsFilename;
	WORD ofsData;
} WINHELP,*LPWINHELP;

typedef struct
{
    UINT16  mkSize;
    BYTE    mkKeyList;
    BYTE    szKeyPhrase[1];
} MULTIKEYHELP, *LPMULTIKEYHELP;

typedef struct {
	WORD wStructSize;
	WORD x;
	WORD y;
	WORD dx;
	WORD dy;
	WORD wMax;
	char rgchMember[2];
} HELPWININFO, *LPHELPWININFO;

#define HELP_CONTEXT        0x0001
#define HELP_QUIT           0x0002
#define HELP_INDEX          0x0003
#define HELP_CONTENTS       0x0003
#define HELP_HELPONHELP     0x0004
#define HELP_SETINDEX       0x0005
#define HELP_SETCONTENTS    0x0005
#define HELP_CONTEXTPOPUP   0x0008
#define HELP_FORCEFILE      0x0009
#define HELP_KEY            0x0101
#define HELP_COMMAND        0x0102
#define HELP_PARTIALKEY     0x0105
#define HELP_MULTIKEY       0x0201
#define HELP_SETWINPOS      0x0203

/* ExitWindows() flags */
#define EW_RESTARTWINDOWS   0x0042
#define EW_REBOOTSYSTEM     0x0043
#define EW_EXITANDEXECAPP   0x0044

/* ExitWindowsEx() flags */
#define EWX_LOGOFF           0
#define EWX_SHUTDOWN         1
#define EWX_REBOOT           2
#define EWX_FORCE            4
#define EWX_POWEROFF         8


#define CCHDEVICENAME 32
#define CCHFORMNAME   32

typedef struct
{
    BYTE   dmDeviceName[CCHDEVICENAME];
    WORD   dmSpecVersion;
    WORD   dmDriverVersion;
    WORD   dmSize;
    WORD   dmDriverExtra;
    DWORD  dmFields;
    INT16  dmOrientation;
    INT16  dmPaperSize;
    INT16  dmPaperLength;
    INT16  dmPaperWidth;
    INT16  dmScale;
    INT16  dmCopies;
    INT16  dmDefaultSource;
    INT16  dmPrintQuality;
    INT16  dmColor;
    INT16  dmDuplex;
    INT16  dmYResolution;
    INT16  dmTTOption;
    INT16  dmCollate;
    BYTE   dmFormName[CCHFORMNAME];
    WORD   dmUnusedPadding;
    WORD   dmBitsPerPel;
    DWORD  dmPelsWidth;
    DWORD  dmPelsHeight;
    DWORD  dmDisplayFlags;
    DWORD  dmDisplayFrequency;
} DEVMODE16, *LPDEVMODE16;

typedef struct
{
    BYTE   dmDeviceName[CCHDEVICENAME];
    WORD   dmSpecVersion;
    WORD   dmDriverVersion;
    WORD   dmSize;
    WORD   dmDriverExtra;
    DWORD  dmFields;
    INT16  dmOrientation;
    INT16  dmPaperSize;
    INT16  dmPaperLength;
    INT16  dmPaperWidth;
    INT16  dmScale;
    INT16  dmCopies;
    INT16  dmDefaultSource;
    INT16  dmPrintQuality;
    INT16  dmColor;
    INT16  dmDuplex;
    INT16  dmYResolution;
    INT16  dmTTOption;
    INT16  dmCollate;
    BYTE   dmFormName[CCHFORMNAME];
    WORD   dmLogPixels;
    DWORD  dmBitsPerPel;
    DWORD  dmPelsWidth;
    DWORD  dmPelsHeight;
    DWORD  dmDisplayFlags;
    DWORD  dmDisplayFrequency;
    DWORD  dmICMMethod;
    DWORD  dmICMIntent;
    DWORD  dmMediaType;
    DWORD  dmDitherType;
    DWORD  dmReserved1;
    DWORD  dmReserved2;
} DEVMODE32A, *LPDEVMODE32A;

typedef struct
{
    WCHAR  dmDeviceName[CCHDEVICENAME];
    WORD   dmSpecVersion;
    WORD   dmDriverVersion;
    WORD   dmSize;
    WORD   dmDriverExtra;
    DWORD  dmFields;
    INT16  dmOrientation;
    INT16  dmPaperSize;
    INT16  dmPaperLength;
    INT16  dmPaperWidth;
    INT16  dmScale;
    INT16  dmCopies;
    INT16  dmDefaultSource;
    INT16  dmPrintQuality;
    INT16  dmColor;
    INT16  dmDuplex;
    INT16  dmYResolution;
    INT16  dmTTOption;
    INT16  dmCollate;
    WCHAR  dmFormName[CCHFORMNAME];
    WORD   dmLogPixels;
    DWORD  dmBitsPerPel;
    DWORD  dmPelsWidth;
    DWORD  dmPelsHeight;
    DWORD  dmDisplayFlags;
    DWORD  dmDisplayFrequency;
    DWORD  dmICMMethod;
    DWORD  dmICMIntent;
    DWORD  dmMediaType;
    DWORD  dmDitherType;
    DWORD  dmReserved1;
    DWORD  dmReserved2;
} DEVMODE32W, *LPDEVMODE32W;

DECL_WINELIB_TYPE_AW(DEVMODE);
DECL_WINELIB_TYPE_AW(LPDEVMODE);

typedef struct _SYSTEM_POWER_STATUS
{
  BOOL16  ACLineStatus;
  BYTE    BatteryFlag;
  BYTE    BatteryLifePercent;
  BYTE    reserved;
  DWORD   BatteryLifeTime;
  DWORD   BatteryFullLifeTime;
} SYSTEM_POWER_STATUS, *LPSYSTEM_POWER_STATUS;

/* 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

/* types of LoadImage */
#define IMAGE_BITMAP	0
#define IMAGE_ICON	1
#define IMAGE_CURSOR	2
#define IMAGE_ENHMETA	3

/* loadflags to LoadImage */
#define LR_DEFAULTCOLOR		0x0000
#define LR_MONOCHROME		0x0001
#define LR_COPYRETURNONORG	0x0002
#define LR_COPYDELETEORC	0x0004
#define LR_COPYFROMRESOURCE	0x0008
#define LR_LOADFROMFILE		0x0010
#define LR_LOADREALSIZE		0x0020
#define LR_LOADMAP3DCOLORS	0x1000

typedef struct _LARGE_INTEGER
{
    DWORD    LowPart;
    LONG     HighPart;
} LARGE_INTEGER,*LPLARGE_INTEGER;

typedef struct _ULARGE_INTEGER
{
    DWORD    LowPart;
    DWORD    HighPart;
} ULARGE_INTEGER,*LPULARGE_INTEGER;

/* SetLastErrorEx types */
#define	SLE_ERROR	0x00000001
#define	SLE_MINORERROR	0x00000002
#define	SLE_WARNING	0x00000003

/* Argument 1 passed to the DllEntryProc. */
#define	DLL_PROCESS_DETACH	0	/* detach process (unload library) */
#define	DLL_PROCESS_ATTACH	1	/* attach process (load library) */
#define	DLL_THREAD_ATTACH	2	/* attach new thread */
#define	DLL_THREAD_DETACH	3	/* detach thread */

typedef struct _MEMORY_BASIC_INFORMATION
{
    LPVOID   BaseAddress;
    LPVOID   AllocationBase;
    DWORD    AllocationProtect;
    DWORD    RegionSize;
    DWORD    State;
    DWORD    Protect;
    DWORD    Type;
} MEMORY_BASIC_INFORMATION,*LPMEMORY_BASIC_INFORMATION;

typedef DWORD (*LPTHREAD_START_ROUTINE)(LPVOID);

typedef BOOL32 (*CODEPAGE_ENUMPROC32A)(LPSTR);
typedef BOOL32 (*CODEPAGE_ENUMPROC32W)(LPWSTR);
DECL_WINELIB_TYPE_AW(CODEPAGE_ENUMPROC);

typedef BOOL32 (*LOCALE_ENUMPROC32A)(LPSTR);
typedef BOOL32 (*LOCALE_ENUMPROC32W)(LPWSTR);
DECL_WINELIB_TYPE_AW(LOCALE_ENUMPROC);

typedef struct tagSYSTEM_INFO
{
    union {
    	DWORD	dwOemId;
	struct {
		WORD wProcessorArchitecture;
		WORD wReserved;
	} x;
    } u;
    DWORD	dwPageSize;
    LPVOID	lpMinimumApplicationAddress;
    LPVOID	lpMaximumApplicationAddress;
    DWORD	dwActiveProcessorMask;
    DWORD	dwNumberOfProcessors;
    DWORD	dwProcessorType;
    DWORD	dwAllocationGranularity;
    WORD	wProcessorLevel;
    WORD	wProcessorRevision;
} SYSTEM_INFO, *LPSYSTEM_INFO;

/* u.x.wProcessorArchitecture (NT) */
#define	PROCESSOR_ARCHITECTURE_INTEL	0
#define	PROCESSOR_ARCHITECTURE_MIPS	1
#define	PROCESSOR_ARCHITECTURE_ALPHA	2
#define	PROCESSOR_ARCHITECTURE_PPC	3
#define	PROCESSOR_ARCHITECTURE_UNKNOWN	0xFFFF

/* dwProcessorType */
#define	PROCESSOR_INTEL_386	386
#define	PROCESSOR_INTEL_486	486
#define	PROCESSOR_INTEL_PENTIUM	586
#define	PROCESSOR_MIPS_R4000	4000
#define	PROCESSOR_ALPHA_21064	21064

/* service main function prototype */
typedef VOID (*LPSERVICE_MAIN_FUNCTION32A)(DWORD,LPSTR);
typedef VOID (*LPSERVICE_MAIN_FUNCTION32W)(DWORD,LPWSTR);
DECL_WINELIB_TYPE_AW(LPSERVICE_MAIN_FUNCTION);

/* service start table */
typedef struct
{
    LPSTR			lpServiceName;
    LPSERVICE_MAIN_FUNCTION32A	lpServiceProc;
} *LPSERVICE_TABLE_ENTRY32A, SERVICE_TABLE_ENTRY32A;

typedef struct
{
    LPWSTR			lpServiceName;
    LPSERVICE_MAIN_FUNCTION32W	lpServiceProc;
} *LPSERVICE_TABLE_ENTRY32W, SERVICE_TABLE_ENTRY32W;

DECL_WINELIB_TYPE_AW(SERVICE_TABLE_ENTRY);
DECL_WINELIB_TYPE_AW(LPSERVICE_TABLE_ENTRY);

/* {G,S}etPriorityClass */
#define	NORMAL_PRIORITY_CLASS	0x00000020
#define	IDLE_PRIORITY_CLASS	0x00000040
#define	HIGH_PRIORITY_CLASS	0x00000080
#define	REALTIME_PRIORITY_CLASS	0x00000100

/* GDI Escape commands */
#define	NEWFRAME		1
#define	ABORTDOC		2
#define	NEXTBAND		3
#define	SETCOLORTABLE		4
#define	GETCOLORTABLE		5
#define	FLUSHOUTPUT		6
#define	DRAFTMODE		7
#define	QUERYESCSUPPORT		8
#define	SETABORTPROC		9
#define	STARTDOC		10
#define	ENDDOC			11
#define	GETPHYSPAGESIZE		12
#define	GETPRINTINGOFFSET	13
#define	GETSCALINGFACTOR	14
#define	MFCOMMENT		15
#define	GETPENWIDTH		16
#define	SETCOPYCOUNT		17
#define	SELECTPAPERSOURCE	18
#define	DEVICEDATA		19
#define	PASSTHROUGH		19
#define	GETTECHNOLGY		20
#define	GETTECHNOLOGY		20 /* yes, both of them */
#define	SETLINECAP		21
#define	SETLINEJOIN		22
#define	SETMITERLIMIT		23
#define	BANDINFO		24
#define	DRAWPATTERNRECT		25
#define	GETVECTORPENSIZE	26
#define	GETVECTORBRUSHSIZE	27
#define	ENABLEDUPLEX		28
#define	GETSETPAPERBINS		29
#define	GETSETPRINTORIENT	30
#define	ENUMPAPERBINS		31
#define	SETDIBSCALING		32
#define	EPSPRINTING		33
#define	ENUMPAPERMETRICS	34
#define	GETSETPAPERMETRICS	35
#define	POSTSCRIPT_DATA		37
#define	POSTSCRIPT_IGNORE	38
#define	MOUSETRAILS		39
#define	GETDEVICEUNITS		42

#define	GETEXTENDEDTEXTMETRICS	256
#define	GETEXTENTTABLE		257
#define	GETPAIRKERNTABLE	258
#define	GETTRACKKERNTABLE	259
#define	EXTTEXTOUT		512
#define	GETFACENAME		513
#define	DOWNLOADFACE		514
#define	ENABLERELATIVEWIDTHS	768
#define	ENABLEPAIRKERNING	769
#define	SETKERNTRACK		770
#define	SETALLJUSTVALUES	771
#define	SETCHARSET		772

#define	STRETCHBLT		2048
#define	GETSETSCREENPARAMS	3072
#define	QUERYDIBSUPPORT		3073
#define	BEGIN_PATH		4096
#define	CLIP_TO_PATH		4097
#define	END_PATH		4098
#define	EXT_DEVICE_CAPS		4099
#define	RESTORE_CTM		4100
#define	SAVE_CTM		4101
#define	SET_ARC_DIRECTION	4102
#define	SET_BACKGROUND_COLOR	4103
#define	SET_POLY_MODE		4104
#define	SET_SCREEN_ANGLE	4105
#define	SET_SPREAD		4106
#define	TRANSFORM_CTM		4107
#define	SET_CLIP_BOX		4108
#define	SET_BOUNDS		4109
#define	SET_MIRROR_MODE		4110
#define	OPENCHANNEL		4110
#define	DOWNLOADHEADER		4111
#define CLOSECHANNEL		4112
#define	POSTSCRIPT_PASSTHROUGH	4115
#define	ENCAPSULATED_POSTSCRIPT	4116

/* Flag returned from Escape QUERYDIBSUPPORT */
#define	QDI_SETDIBITS		1
#define	QDI_GETDIBITS		2
#define	QDI_DIBTOSCREEN		4
#define	QDI_STRETCHDIB		8

/* Spooler Error Codes */
#define	SP_NOTREPORTED	0x4000
#define	SP_ERROR	(-1)
#define	SP_APPABORT	(-2)
#define	SP_USERABORT	(-3)
#define	SP_OUTOFDISK	(-4)
#define	SP_OUTOFMEMORY	(-5)

#define PR_JOBSTATUS	0x0000

typedef BOOL32 (*ENUMRESTYPEPROC32A)(HMODULE32 hModule, LPSTR type,LONG lParam);
typedef BOOL32 (*ENUMRESTYPEPROC32W)(HMODULE32 hModule, LPWSTR type,LONG lParam);
typedef BOOL32 (*ENUMRESNAMEPROC32A)(HMODULE32 hModule, LPCSTR type,
				LPSTR name,LONG lParam);
typedef BOOL32 (*ENUMRESNAMEPROC32W)(HMODULE32 hModule, LPCWSTR type,
				LPWSTR name,LONG lParam);
typedef BOOL32 (*ENUMRESLANGPROC32A)(HMODULE32 hModule, LPCSTR type,
				LPCSTR name,WORD lang,LONG lParam);
typedef BOOL32 (*ENUMRESLANGPROC32W)(HMODULE32 hModule, LPCWSTR type,
				LPCWSTR name,WORD lang,LONG lParam);

DECL_WINELIB_TYPE_AW(ENUMRESTYPEPROC);
DECL_WINELIB_TYPE_AW(ENUMRESNAMEPROC);
DECL_WINELIB_TYPE_AW(ENUMRESLANGPROC);

/* Character Type Flags */
#define	CT_CTYPE1		0x00000001	/* usual ctype */
#define	CT_CTYPE2		0x00000002	/* bidirectional layout info */
#define	CT_CTYPE3		0x00000004	/* textprocessing info */

/* CType 1 Flag Bits */
#define C1_UPPER		0x0001
#define C1_LOWER		0x0002
#define C1_DIGIT		0x0004
#define C1_SPACE		0x0008
#define C1_PUNCT		0x0010
#define C1_CNTRL		0x0020
#define C1_BLANK		0x0040
#define C1_XDIGIT		0x0080
#define C1_ALPHA		0x0100

/* CType 2 Flag Bits */
#define	C2_LEFTTORIGHT		0x0001
#define	C2_RIGHTTOLEFT		0x0002
#define	C2_EUROPENUMBER		0x0003
#define	C2_EUROPESEPARATOR	0x0004
#define	C2_EUROPETERMINATOR	0x0005
#define	C2_ARABICNUMBER		0x0006
#define	C2_COMMONSEPARATOR	0x0007
#define	C2_BLOCKSEPARATOR	0x0008
#define	C2_SEGMENTSEPARATOR	0x0009
#define	C2_WHITESPACE		0x000A
#define	C2_OTHERNEUTRAL		0x000B
#define	C2_NOTAPPLICABLE	0x0000

/* CType 3 Flag Bits */
#define	C3_NONSPACING		0x0001
#define	C3_DIACRITIC		0x0002
#define	C3_VOWELMARK		0x0004
#define	C3_SYMBOL		0x0008
#define	C3_KATAKANA		0x0010
#define	C3_HIRAGANA		0x0020
#define	C3_HALFWIDTH		0x0040
#define	C3_FULLWIDTH		0x0080
#define	C3_IDEOGRAPH		0x0100
#define	C3_KASHIDA		0x0200
#define	C3_LEXICAL		0x0400
#define	C3_ALPHA		0x8000
#define	C3_NOTAPPLICABLE	0x0000


#pragma pack(4)

/* Declarations for functions that exist only in Win16 */

WORD       AllocCStoDSAlias(WORD);
WORD       AllocDStoCSAlias(WORD);
WORD       AllocSelector(WORD);
WORD       AllocSelectorArray(WORD);
VOID       CalcChildScroll(HWND16,WORD);
INT16      Catch(LPCATCHBUF);
WORD       ChangeSelector(WORD,WORD);
INT16      CloseComm(INT16);
HGLOBAL16  CreateCursorIconIndirect(HINSTANCE16,CURSORICONINFO*,LPCVOID,LPCVOID);
BOOL16     DCHook(HDC16,WORD,DWORD,LPARAM);
VOID       DirectedYield(HTASK16);
HGLOBAL16  DirectResAlloc(HINSTANCE16,WORD,UINT16);
BOOL16     DlgDirSelect(HWND16,LPSTR,INT16);
BOOL16     DlgDirSelectComboBox(HWND16,LPSTR,INT16);
DWORD      DumpIcon(SEGPTR,WORD*,SEGPTR*,SEGPTR*);
BOOL16     EnableHardwareInput(BOOL16);
INT16      ExcludeVisRect(HDC16,INT16,INT16,INT16,INT16);
HANDLE16   FarGetOwner(HGLOBAL16);
VOID       FarSetOwner(HGLOBAL16,HANDLE16);
BOOL16     FastWindowFrame(HDC16,const RECT16*,INT16,INT16,DWORD);
VOID       FillWindow(HWND16,HWND16,HDC16,HBRUSH16);
INT16      FlushComm(INT16,INT16);
WORD       FreeSelector(WORD);
UINT16     GDIRealizePalette(HDC16);
HPALETTE16 GDISelectPalette(HDC16,HPALETTE16,WORD);
HANDLE16   GetAtomHandle(ATOM);
DWORD      GetBitmapDimension(HBITMAP16);
DWORD      GetBrushOrg(HDC16);
HANDLE16   GetCodeHandle(FARPROC16);
INT16      GetCommError(INT16,LPCOMSTAT);
UINT16     GetCommEventMask(INT16,UINT16);
HBRUSH16   GetControlBrush(HWND16,HDC16,UINT16);
VOID       GetCodeInfo(FARPROC16,LPVOID);
HANDLE16   GetCurrentPDB(void);
DWORD      GetCurrentPosition(HDC16);
HTASK16    GetCurrentTask(void);
DWORD      GetDCHook(HDC16,FARPROC16*);
DWORD      GetDCOrg(HDC16);
HDC16      GetDCState(HDC16);
HWND16     GetDesktopHwnd(void);
SEGPTR     GetDOSEnvironment(void);
INT16      GetEnvironment(LPCSTR,LPSTR,UINT16);
HMODULE16  GetExePtr(HANDLE16);
WORD       GetExeVersion(void);
DWORD      GetHeapSpaces(HMODULE16);
INT16      GetKbCodePage(VOID);
INT16      GetInstanceData(HINSTANCE16,WORD,INT16);
HGLOBAL16  GetMetaFileBits(HMETAFILE16);
BOOL16     GetModuleName(HINSTANCE16,LPSTR,INT16);
INT16      GetModuleUsage(HINSTANCE16);
FARPROC16  GetMouseEventProc(void);
UINT16     GetNumTasks(void);
DWORD      GetSelectorBase(WORD);
DWORD      GetSelectorLimit(WORD);
HINSTANCE16 GetTaskDS(void);
HQUEUE16   GetTaskQueue(HTASK16);
BYTE       GetTempDrive(BYTE);
DWORD      GetTextExtent(HDC16,LPCSTR,INT16);
DWORD      GetViewportExt(HDC16);
DWORD      GetViewportOrg(HDC16);
BOOL16     GetWinDebugInfo(LPWINDEBUGINFO,UINT16);
DWORD      GetWindowExt(HDC16);
DWORD      GetWindowOrg(HDC16);
DWORD      GetWinFlags(void);
DWORD      GlobalDOSAlloc(DWORD);
WORD       GlobalDOSFree(WORD);
void       GlobalFreeAll(HGLOBAL16);
HGLOBAL16  GlobalLRUNewest(HGLOBAL16);
HGLOBAL16  GlobalLRUOldest(HGLOBAL16);
VOID       GlobalNotify(FARPROC16);
WORD       GlobalPageLock(HGLOBAL16);
WORD       GlobalPageUnlock(HGLOBAL16);
INT16      InitApp(HINSTANCE16);
HRGN16     InquireVisRgn(HDC16);
INT16      IntersectVisRect(HDC16,INT16,INT16,INT16,INT16);
BOOL16     IsDCCurrentPalette(HDC16);
BOOL16     IsGDIObject(HGDIOBJ16);
BOOL16     IsSharedSelector(HANDLE16);
BOOL16     IsTask(HTASK16);
HTASK16    IsTaskLocked(void);
BOOL16     IsValidMetaFile(HMETAFILE16);
BOOL16     LocalInit(HANDLE16,WORD,WORD);
FARPROC16  LocalNotify(FARPROC16);
HTASK16    LockCurrentTask(BOOL16);
HMENU16    LookupMenuHandle(HMENU16,INT16);
DWORD      MoveTo(HDC16,INT16,INT16);
DWORD      OffsetViewportOrg(HDC16,INT16,INT16);
INT16      OffsetVisRgn(HDC16,INT16,INT16);
DWORD      OffsetWindowOrg(HDC16,INT16,INT16);
VOID       OldYield(void);
INT16      OpenComm(LPCSTR,UINT16,UINT16);
VOID       PaintRect(HWND16,HWND16,HDC16,HBRUSH16,const RECT16*);
VOID       PostEvent(HTASK16);
WORD       PrestoChangoSelector(WORD,WORD);
INT16      ReadComm(INT16,LPSTR,INT16);
UINT16     RealizeDefaultPalette(HDC16);
INT16      RestoreVisRgn(HDC16);
HRGN16     SaveVisRgn(HDC16);
DWORD      ScaleViewportExt(HDC16,INT16,INT16,INT16,INT16);
DWORD      ScaleWindowExt(HDC16,INT16,INT16,INT16,INT16);
WORD       SelectorAccessRights(WORD,WORD,WORD);
INT16      SelectVisRgn(HDC16,HRGN16);
DWORD      SetBitmapDimension(HBITMAP16,INT16,INT16);
DWORD      SetBrushOrg(HDC16,INT16,INT16);
UINT16*    SetCommEventMask(INT16,UINT16);
BOOL16     SetDCHook(HDC16,FARPROC16,DWORD);
DWORD      SetDCOrg(HDC16,INT16,INT16);
VOID       SetDCState(HDC16,HDC16);
BOOL16     SetDeskPattern(void);
INT16      SetEnvironment(LPCSTR,LPCSTR,UINT16);
WORD       SetHookFlags(HDC16,WORD);
HMETAFILE16 SetMetaFileBits(HGLOBAL16);
VOID       SetPriority(HTASK16,INT16);
FARPROC16  SetResourceHandler(HINSTANCE16,LPSTR,FARPROC16);
WORD       SetSelectorBase(WORD,DWORD);
WORD       SetSelectorLimit(WORD,DWORD);
LONG       SetSwapAreaSize(WORD);
HQUEUE16   SetTaskQueue(HTASK16,HQUEUE16);
FARPROC16  SetTaskSignalProc(HTASK16,FARPROC16);
DWORD      SetViewportExt(HDC16,INT16,INT16);
DWORD      SetViewportOrg(HDC16,INT16,INT16);
BOOL16     SetWinDebugInfo(LPWINDEBUGINFO);
DWORD      SetWindowExt(HDC16,INT16,INT16);
DWORD      SetWindowOrg(HDC16,INT16,INT16);
VOID       SwitchStackBack(void);
VOID       SwitchStackTo(WORD,WORD,WORD);
INT16      Throw(LPCATCHBUF,INT16);
INT16      UngetCommChar(INT16,CHAR);
VOID       UserYield(void);
BOOL16     WaitEvent(HTASK16);
INT16      WriteComm(INT16,LPSTR,INT16);
VOID       WriteOutProfiles(VOID);
VOID       hmemcpy(LPVOID,LPCVOID,LONG);
VOID       Yield(void);

/* Declarations for functions that exist only in Win32 */

BOOL32     Beep(DWORD,DWORD);
BOOL32     ClearCommError(INT32,LPDWORD,LPCOMSTAT);
BOOL32     CloseHandle(HANDLE32);
BOOL32     CopyFile32A(LPCSTR,LPCSTR,BOOL32);
BOOL32     CopyFile32W(LPCWSTR,LPCWSTR,BOOL32);
#define    CopyFile WINELIB_NAME_AW(CopyFile)
INT32      CompareFileTime(LPFILETIME,LPFILETIME);
HFILE32    CreateFile32A(LPCSTR,DWORD,DWORD,LPSECURITY_ATTRIBUTES,DWORD,DWORD,HANDLE32);
HFILE32    CreateFile32W(LPCWSTR,DWORD,DWORD,LPSECURITY_ATTRIBUTES,DWORD,DWORD,HANDLE32);
#define    CreateFile WINELIB_NAME_AW(CreateFile)
HANDLE32   CreateFileMapping32A(HANDLE32,LPSECURITY_ATTRIBUTES,DWORD,DWORD,DWORD,LPCSTR);
HANDLE32   CreateFileMapping32W(HANDLE32,LPSECURITY_ATTRIBUTES,DWORD,DWORD,DWORD,LPCWSTR);
#define    CreateFileMapping WINELIB_NAME_AW(CreateFileMapping)
BOOL32     DosDateTimeToFileTime(WORD,WORD,LPFILETIME);
INT32      EnumPropsEx32A(HWND32,PROPENUMPROCEX32A,LPARAM);
INT32      EnumPropsEx32W(HWND32,PROPENUMPROCEX32W,LPARAM);
#define    EnumPropsEx WINELIB_NAME_AW(EnumPropsEx)
BOOL32     EnumResourceLanguages32A(HMODULE32,LPCSTR,LPCSTR,ENUMRESLANGPROC32A,LONG);
BOOL32     EnumResourceLanguages32W(HMODULE32,LPCWSTR,LPCWSTR,ENUMRESLANGPROC32W,LONG);
#define    EnumResourceLanguages WINELIB_NAME_AW(EnumResourceLanguages)
BOOL32     EnumResourceNames32A(HMODULE32,LPCSTR,ENUMRESNAMEPROC32A,LONG);
BOOL32     EnumResourceNames32W(HMODULE32,LPCWSTR,ENUMRESNAMEPROC32W,LONG);
#define    EnumResourceNames WINELIB_NAME_AW(EnumResourceNames)
BOOL32     EnumResourceTypes32A(HMODULE32,ENUMRESTYPEPROC32A,LONG);
BOOL32     EnumResourceTypes32W(HMODULE32,ENUMRESTYPEPROC32W,LONG);
#define    EnumResourceTypes WINELIB_NAME_AW(EnumResourceTypes)
BOOL32     EnumSystemCodePages32A(CODEPAGE_ENUMPROC32A,DWORD);
BOOL32     EnumSystemCodePages32W(CODEPAGE_ENUMPROC32W,DWORD);
#define    EnumSystemCodePages WINELIB_NAME_AW(EnumSystemCodePages)
BOOL32     EnumSystemLocales32A(LOCALE_ENUMPROC32A,DWORD);
BOOL32     EnumSystemLocales32W(LOCALE_ENUMPROC32W,DWORD);
#define    EnumSystemLocales WINELIB_NAME_AW(EnumSystemLocales)
BOOL32     EnumThreadWindows(DWORD,WNDENUMPROC32,LPARAM);
void       ExitProcess(DWORD);
BOOL32     ExitWindowsEx(UINT32,DWORD);
DWORD      ExpandEnvironmentStrings32A(LPCSTR,LPSTR,DWORD);
DWORD      ExpandEnvironmentStrings32W(LPCWSTR,LPWSTR,DWORD);
#define    ExpandEnvironmentStrings WINELIB_NAME_AW(ExpandEnvironmentStrings)
BOOL32     FileTimeToDosDateTime(const FILETIME*,LPWORD,LPWORD);
BOOL32     FileTimeToLocalFileTime(const FILETIME*,LPFILETIME);
BOOL32     FileTimeToSystemTime(const FILETIME*,LPSYSTEMTIME);
HRSRC32    FindResourceEx32A(HINSTANCE32,LPCSTR,LPCSTR,WORD);
HRSRC32    FindResourceEx32W(HINSTANCE32,LPCWSTR,LPCWSTR,WORD);
#define    FindResourceEx WINELIB_NAME_AW(FindResourceEx)
BOOL32     FlushFileBuffers(HFILE32);
BOOL32     FreeEnvironmentStrings32A(LPSTR);
BOOL32     FreeEnvironmentStrings32W(LPWSTR);
#define    FreeEnvironmentStrings WINELIB_NAME_AW(FreeEnvironmentStrings)
UINT32     GetACP(void);
LPCSTR     GetCommandLine32A();
LPCWSTR    GetCommandLine32W();
#define    GetCommandLine WINELIB_NAME_AW(GetCommandLine)
BOOL32     GetCommTimeouts(INT32,LPCOMMTIMEOUTS);
BOOL32     GetCPInfo(UINT32,LPCPINFO);
HANDLE32   GetCurrentProcess(void);
DWORD      GetCurrentProcessId(void);
HANDLE32   GetCurrentThread(void);
DWORD      GetCurrentThreadId(void);
BOOL32     GetDCOrgEx(HDC32,LPPOINT32);
LPSTR      GetEnvironmentStrings32A(void);
LPWSTR     GetEnvironmentStrings32W(void);
#define    GetEnvironmentStrings WINELIB_NAME_AW(GetEnvironmentStrings)
DWORD      GetEnvironmentVariable32A(LPCSTR,LPSTR,DWORD);
DWORD      GetEnvironmentVariable32W(LPCWSTR,LPWSTR,DWORD);
#define    GetEnvironmentVariable WINELIB_NAME_AW(GetEnvironmentVariable)
DWORD      GetFileInformationByHandle(HFILE32,BY_HANDLE_FILE_INFORMATION*);
DWORD      GetFileSize(HFILE32,LPDWORD);
BOOL32     GetFileTime(HFILE32,LPFILETIME,LPFILETIME,LPFILETIME);
DWORD      GetFileType(HFILE32);
DWORD      GetFullPathName32A(LPCSTR,DWORD,LPSTR,LPSTR*);
DWORD      GetFullPathName32W(LPCWSTR,DWORD,LPWSTR,LPWSTR*);
#define    GetFullPathName WINELIB_NAME_AW(GetFullPathName)
VOID       GetLocalTime(LPSYSTEMTIME);
DWORD      GetLogicalDrives(void);
UINT32     GetOEMCP(void);
DWORD      GetPriorityClass(HANDLE32);
HANDLE32   GetProcessHeap(void);
DWORD      GetShortPathName32A(LPCSTR,LPSTR,DWORD);
DWORD      GetShortPathName32W(LPCWSTR,LPWSTR,DWORD);
#define    GetShortPathName WINELIB_NAME_AW(GetShortPathName)
HFILE32    GetStdHandle(DWORD);
BOOL32     GetStringTypeEx32A(LCID,DWORD,LPCSTR,INT32,LPWORD);
BOOL32     GetStringTypeEx32W(LCID,DWORD,LPCWSTR,INT32,LPWORD);
#define    GetStringTypeEx WINELIB_NAME_AW(GetStringTypeEx)
VOID       GetSystemInfo(LPSYSTEM_INFO);
BOOL32     GetSystemPowerStatus(LPSYSTEM_POWER_STATUS);
VOID       GetSystemTime(LPSYSTEMTIME);
LCID       GetThreadLocale();
INT32      GetThreadPriority(HANDLE32);
DWORD      GetWindowThreadProcessId(HWND32,LPDWORD);
VOID       GlobalMemoryStatus(LPMEMORYSTATUS);
LPVOID     HeapAlloc(HANDLE32,DWORD,DWORD);
DWORD      HeapCompact(HANDLE32,DWORD);
HANDLE32   HeapCreate(DWORD,DWORD,DWORD);
BOOL32     HeapDestroy(HANDLE32);
BOOL32     HeapFree(HANDLE32,DWORD,LPVOID);
BOOL32     HeapLock(HANDLE32);
LPVOID     HeapReAlloc(HANDLE32,DWORD,LPVOID,DWORD);
DWORD      HeapSize(HANDLE32,DWORD,LPVOID);
BOOL32     HeapUnlock(HANDLE32);
BOOL32     HeapValidate(HANDLE32,DWORD,LPVOID);
BOOL32     IsDBCSLeadByteEx(UINT32,BYTE);
BOOL32     IsWindowUnicode(HWND32);
BOOL32     IsValidLocale(DWORD,DWORD);
BOOL32     LocalFileTimeToFileTime(const FILETIME*,LPFILETIME);
LPVOID     MapViewOfFile(HANDLE32,DWORD,DWORD,DWORD,DWORD);
LPVOID     MapViewOfFileEx(HANDLE32,DWORD,DWORD,DWORD,DWORD,LPVOID);
INT32      MessageBoxEx32A(HWND32,LPCSTR,LPCSTR,UINT32,WORD);
INT32      MessageBoxEx32W(HWND32,LPCWSTR,LPCWSTR,UINT32,WORD);
#define    MessageBoxEx WINELIB_NAME_AW(MessageBoxEx)
BOOL32     MoveFile32A(LPCSTR,LPCSTR);
BOOL32     MoveFile32W(LPCWSTR,LPCWSTR);
#define    MoveFile WINELIB_NAME_AW(MoveFile)
HANDLE32   OpenFileMapping32A(DWORD,BOOL32,LPCSTR);
HANDLE32   OpenFileMapping32W(DWORD,BOOL32,LPCWSTR);
#define    OpenFileMapping WINELIB_NAME_AW(OpenFileMapping)
DWORD      QueryDosDevice32A(LPCSTR,LPSTR,DWORD);
DWORD      QueryDosDevice32W(LPCWSTR,LPWSTR,DWORD);
#define    QueryDosDevice WINELIB_NAME_AW(QueryDosDevice)
BOOL32     QueryPerformanceCounter(LPLARGE_INTEGER);
BOOL32     ReadConsole32A(HANDLE32,LPVOID,DWORD,LPDWORD,LPVOID);
BOOL32     ReadConsole32W(HANDLE32,LPVOID,DWORD,LPDWORD,LPVOID);
#define    ReadConsole WINELIB_NAME_AW(ReadConsole)
BOOL32     ReadFile(HFILE32,LPVOID,DWORD,LPDWORD,LPOVERLAPPED);
DWORD      RegCreateKeyEx32A(HKEY,LPCSTR,DWORD,LPSTR,DWORD,REGSAM,
                             LPSECURITY_ATTRIBUTES,LPHKEY,LPDWORD);
DWORD      RegCreateKeyEx32W(HKEY,LPCWSTR,DWORD,LPWSTR,DWORD,REGSAM,
                             LPSECURITY_ATTRIBUTES,LPHKEY,LPDWORD);
#define    RegCreateKeyEx WINELIB_NAME_AW(RegCreateKeyEx)
DWORD      RegEnumKeyEx32A(HKEY,DWORD,LPSTR,LPDWORD,LPDWORD,LPSTR,LPDWORD,LPFILETIME);
DWORD      RegEnumKeyEx32W(HKEY,DWORD,LPWSTR,LPDWORD,LPDWORD,LPWSTR,LPDWORD,LPFILETIME);
#define    RegEnumKeyEx WINELIB_NAME_AW(RegEnumKeyEx)
DWORD      RegOpenKeyEx32W(HKEY,LPCWSTR,DWORD,REGSAM,LPHKEY);
DWORD      RegOpenKeyEx32A(HKEY,LPCSTR,DWORD,REGSAM,LPHKEY);
#define    RegOpenKeyEx WINELIB_NAME_AW(RegOpenKeyEx)
DWORD      RegQueryInfoKey32W(HKEY,LPWSTR,LPDWORD,LPDWORD,LPDWORD,LPDWORD,
                            LPDWORD,LPDWORD,LPDWORD,LPDWORD,LPDWORD,LPFILETIME);
DWORD      RegQueryInfoKey32A(HKEY,LPSTR,LPDWORD,LPDWORD,LPDWORD,LPDWORD,
                            LPDWORD,LPDWORD,LPDWORD,LPDWORD,LPDWORD,LPFILETIME);
#define    RegQueryInfoKey WINELIB_NAME_AW(RegQueryInfoKey)
VOID       RtlFillMemory(LPVOID,UINT32,UINT32);
VOID       RtlMoveMemory(LPVOID,LPCVOID,UINT32);
VOID       RtlZeroMemory(LPVOID,UINT32);
DWORD      SearchPath32A(LPCSTR,LPCSTR,LPCSTR,DWORD,LPSTR,LPSTR*);
DWORD      SearchPath32W(LPCWSTR,LPCWSTR,LPCWSTR,DWORD,LPWSTR,LPWSTR*);
#define    SearchPath WINELIB_NAME(SearchPath)
BOOL32     SetBrushOrgEx(HDC32,INT32,INT32,LPPOINT32);
BOOL32     SetCommMask(INT32,DWORD);
BOOL32     SetCommTimeouts(INT32,LPCOMMTIMEOUTS);
BOOL32     SetConsoleTitle32A(LPCSTR);
BOOL32     SetConsoleTitle32W(LPCWSTR);
#define    SetConsoleTitle WINELIB_NAME_AW(SetConsoleTitle)
BOOL32     SetEndOfFile(HFILE32);
BOOL32     SetEnvironmentVariable32A(LPCSTR,LPCSTR);
BOOL32     SetEnvironmentVariable32W(LPCWSTR,LPCWSTR);
#define    SetEnvironmentVariable WINELIB_NAME_AW(SetEnvironmentVariable)
DWORD      SetFilePointer(HFILE32,LONG,LPLONG,DWORD);
BOOL32     SetFileTime(HFILE32,const FILETIME*,const FILETIME*,const FILETIME*);
VOID       SetLastErrorEx(DWORD,DWORD);
BOOL32     SetPriorityClass(HANDLE32,DWORD);
BOOL32     SetStdHandle(DWORD,HANDLE32);
BOOL32     SetSystemPowerState(BOOL32,BOOL32);
BOOL32     SetSystemTime(const SYSTEMTIME*);
BOOL32     SetThreadPriority(HANDLE32,INT32);
BOOL32     SetTimeZoneInformation(const LPTIME_ZONE_INFORMATION);
VOID       Sleep(DWORD);
BOOL32     SystemTimeToFileTime(const SYSTEMTIME*,LPFILETIME);
BOOL32     TrackPopupMenuEx(HMENU32,UINT32,INT32,INT32,HWND32,LPTPMPARAMS);
DWORD      TlsAlloc(void);
BOOL32     TlsFree(DWORD);
LPVOID     TlsGetValue(DWORD);
BOOL32     TlsSetValue(DWORD,LPVOID);
BOOL32     UnmapViewOfFile(LPVOID);
LPVOID     VirtualAlloc(LPVOID,DWORD,DWORD,DWORD);
BOOL32     VirtualFree(LPVOID,DWORD,DWORD);
BOOL32     VirtualLock(LPVOID,DWORD);
BOOL32     VirtualProtect(LPVOID,DWORD,DWORD,LPDWORD);
BOOL32     VirtualProtectEx(HANDLE32,LPVOID,DWORD,DWORD,LPDWORD);
BOOL32     VirtualQuery(LPCVOID,LPMEMORY_BASIC_INFORMATION,DWORD);
BOOL32     VirtualQueryEx(HANDLE32,LPCVOID,LPMEMORY_BASIC_INFORMATION,DWORD);
BOOL32     VirtualUnlock(LPVOID,DWORD);
BOOL32     WriteConsole32A(HANDLE32,LPVOID,DWORD,LPDWORD,LPVOID);
BOOL32     WriteConsole32W(HANDLE32,LPVOID,DWORD,LPDWORD,LPVOID);
#define    WriteConsole WINELIB_NAME_AW(WriteConsole)
BOOL32     WriteFile(HFILE32,LPVOID,DWORD,LPDWORD,LPOVERLAPPED);


/* Declarations for functions that are the same in Win16 and Win32 */

VOID       CloseSound(VOID);
DWORD      GetDialogBaseUnits(void);
VOID       GetKeyboardState(LPBYTE);
DWORD      GetLastError(void);
DWORD      GetMenuCheckMarkDimensions(void);
LONG       GetMessageExtraInfo(void);
DWORD      GetMessagePos(void);
LONG       GetMessageTime(void);
DWORD      GetTickCount(void);
ATOM       GlobalDeleteAtom(ATOM);
VOID       LZDone(void);
DWORD      OemKeyScan(WORD);
DWORD      RegCloseKey(HKEY);
DWORD      RegFlushKey(HKEY);
VOID       ReleaseCapture(void);
VOID       SetKeyboardState(LPBYTE);
VOID       SetLastError(DWORD);
VOID       WaitMessage(VOID);


/* Declarations for functions that change between Win16 and Win32 */

INT16      AccessResource16(HINSTANCE16,HRSRC16);
INT32      AccessResource32(HINSTANCE32,HRSRC32);
#define    AccessResource WINELIB_NAME(AccessResource)
ATOM       AddAtom16(SEGPTR);
ATOM       AddAtom32A(LPCSTR);
ATOM       AddAtom32W(LPCWSTR);
#define    AddAtom WINELIB_NAME_AW(AddAtom)
INT16      AddFontResource16(LPCSTR);
INT32      AddFontResource32A(LPCSTR);
INT32      AddFontResource32W(LPCWSTR);
#define    AddFontResource WINELIB_NAME_AW(AddFontResource)
BOOL16     AdjustWindowRect16(LPRECT16,DWORD,BOOL16);
BOOL32     AdjustWindowRect32(LPRECT32,DWORD,BOOL32);
#define    AdjustWindowRect WINELIB_NAME(AdjustWindowRect)
BOOL16     AdjustWindowRectEx16(LPRECT16,DWORD,BOOL16,DWORD);
BOOL32     AdjustWindowRectEx32(LPRECT32,DWORD,BOOL32,DWORD);
#define    AdjustWindowRectEx WINELIB_NAME(AdjustWindowRectEx)
HGLOBAL16  AllocResource16(HINSTANCE16,HRSRC16,DWORD);
HGLOBAL32  AllocResource32(HINSTANCE32,HRSRC32,DWORD);
#define    AllocResource WINELIB_NAME(AllocResource)
BOOL16     AnimatePalette16(HPALETTE16,UINT16,UINT16,LPPALETTEENTRY);
BOOL32     AnimatePalette32(HPALETTE32,UINT32,UINT32,LPPALETTEENTRY);
#define    AnimatePalette WINELIB_NAME(AnimatePalette)
SEGPTR     AnsiLower16(SEGPTR);
#define    AnsiLower32A CharLower32A
#define    AnsiLower32W CharLower32W
#define    AnsiLower WINELIB_NAME_AW(AnsiLower)
UINT16     AnsiLowerBuff16(LPSTR,UINT16);
#define    AnsiLowerBuff32A CharLowerBuff32A
#define    AnsiLowerBuff32W CharLowerBuff32W
#define    AnsiLowerBuff WINELIB_NAME_AW(AnsiLowerBuff)
SEGPTR     AnsiNext16(SEGPTR);
#define    AnsiNext32A CharNext32A
#define    AnsiNext32W CharNext32W
#define    AnsiNext WINELIB_NAME_AW(AnsiNext)
SEGPTR     AnsiPrev16(SEGPTR,SEGPTR);
#define    AnsiPrev32A CharPrev32A
#define    AnsiPrev32W CharPrev32W
#define    AnsiPrev WINELIB_NAME_AW(AnsiPrev)
INT16      AnsiToOem16(LPCSTR,LPSTR);
#define    AnsiToOem32A CharToOem32A
#define    AnsiToOem32W CharToOem32W
#define    AnsiToOem WINELIB_NAME_AW(AnsiToOem)
VOID       AnsiToOemBuff16(LPCSTR,LPSTR,UINT16);
#define    AnsiToOemBuff32A CharToOemBuff32A
#define    AnsiToOemBuff32W CharToOemBuff32W
#define    AnsiToOemBuff WINELIB_NAME_AW(AnsiToOemBuff)
SEGPTR     AnsiUpper16(SEGPTR);
#define    AnsiUpper32A CharUpper32A
#define    AnsiUpper32W CharUpper32W
#define    AnsiUpper WINELIB_NAME_AW(AnsiUpper)
UINT16     AnsiUpperBuff16(LPSTR,UINT16);
#define    AnsiUpperBuff32A CharUpperBuff32A
#define    AnsiUpperBuff32W CharUpperBuff32W
#define    AnsiUpperBuff WINELIB_NAME_AW(AnsiUpperBuff)
BOOL16     AnyPopup16(void);
BOOL32     AnyPopup32(void);
#define    AnyPopup WINELIB_NAME(AnyPopup)
BOOL16     AppendMenu16(HMENU16,UINT16,UINT16,SEGPTR);
BOOL32     AppendMenu32A(HMENU32,UINT32,UINT32,LPCSTR);
BOOL32     AppendMenu32W(HMENU32,UINT32,UINT32,LPCWSTR);
#define    AppendMenu WINELIB_NAME_AW(AppendMenu)
BOOL16     Arc16(HDC16,INT16,INT16,INT16,INT16,INT16,INT16,INT16,INT16);
BOOL32     Arc32(HDC32,INT32,INT32,INT32,INT32,INT32,INT32,INT32,INT32);
#define    Arc WINELIB_NAME(Arc)
UINT16     ArrangeIconicWindows16(HWND16);
UINT32     ArrangeIconicWindows32(HWND32);
#define    ArrangeIconicWindows WINELIB_NAME(ArrangeIconicWindows)
HDWP16     BeginDeferWindowPos16(INT16);
HDWP32     BeginDeferWindowPos32(INT32);
#define    BeginDeferWindowPos WINELIB_NAME(BeginDeferWindowPos)
HDC16      BeginPaint16(HWND16,LPPAINTSTRUCT16);
HDC32      BeginPaint32(HWND32,LPPAINTSTRUCT32);
#define    BeginPaint WINELIB_NAME(BeginPaint)
BOOL16     BitBlt16(HDC16,INT16,INT16,INT16,INT16,HDC16,INT16,INT16,DWORD);
BOOL32     BitBlt32(HDC32,INT32,INT32,INT32,INT32,HDC32,INT32,INT32,DWORD);
#define    BitBlt WINELIB_NAME(BitBlt)
BOOL16     BringWindowToTop16(HWND16);
BOOL32     BringWindowToTop32(HWND32);
#define    BringWindowToTop WINELIB_NAME(BringWindowToTop)
BOOL16     BuildCommDCB16(LPCSTR,LPDCB16);
BOOL32     BuildCommDCB32A(LPCSTR,LPDCB32);
BOOL32     BuildCommDCB32W(LPCWSTR,LPDCB32);
#define    BuildCommDCB WINELIB_NAME_AW(BuildCommDCB)
BOOL32     BuildCommDCBAndTimeouts32A(LPCSTR,LPDCB32,LPCOMMTIMEOUTS);
BOOL32     BuildCommDCBAndTimeouts32W(LPCWSTR,LPDCB32,LPCOMMTIMEOUTS);
#define    BuildCommDCBAndTimeouts WINELIB_NAME_AW(BuildCommDCBAndTimeouts)
BOOL16     CallMsgFilter16(SEGPTR,INT16);
BOOL32     CallMsgFilter32A(LPMSG32,INT32);
BOOL32     CallMsgFilter32W(LPMSG32,INT32);
#define    CallMsgFilter WINELIB_NAME_AW(CallMsgFilter)
LRESULT    CallNextHookEx16(HHOOK,INT16,WPARAM16,LPARAM);
LRESULT    CallNextHookEx32(HHOOK,INT32,WPARAM32,LPARAM);
#define    CallNextHookEx WINELIB_NAME(CallNextHookEx)
LRESULT    CallWindowProc16(WNDPROC16,HWND16,UINT16,WPARAM16,LPARAM);
LRESULT    CallWindowProc32A(WNDPROC32,HWND32,UINT32,WPARAM32,LPARAM);
LRESULT    CallWindowProc32W(WNDPROC32,HWND32,UINT32,WPARAM32,LPARAM);
#define    CallWindowProc WINELIB_NAME_AW(CallWindowProc)
BOOL16     ChangeClipboardChain16(HWND16,HWND16);
BOOL32     ChangeClipboardChain32(HWND32,HWND32);
#define    ChangeClipboardChain WINELIB_NAME(ChangeClipboardChain)
BOOL16     ChangeMenu16(HMENU16,UINT16,SEGPTR,UINT16,UINT16);
BOOL32     ChangeMenu32A(HMENU32,UINT32,LPCSTR,UINT32,UINT32);
BOOL32     ChangeMenu32W(HMENU32,UINT32,LPCWSTR,UINT32,UINT32);
#define    ChangeMenu WINELIB_NAME_AW(ChangeMenu)
LPSTR      CharLower32A(LPSTR);
LPWSTR     CharLower32W(LPWSTR);
#define    CharLower WINELIB_NAME_AW(CharLower)
DWORD      CharLowerBuff32A(LPSTR,DWORD);
DWORD      CharLowerBuff32W(LPWSTR,DWORD);
#define    CharLowerBuff WINELIB_NAME_AW(CharLowerBuff)
LPSTR      CharNext32A(LPCSTR);
LPWSTR     CharNext32W(LPCWSTR);
#define    CharNext WINELIB_NAME_AW(CharNext)
LPSTR      CharNextEx32A(WORD,LPCSTR,DWORD);
LPWSTR     CharNextEx32W(WORD,LPCWSTR,DWORD);
#define    CharNextEx WINELIB_NAME_AW(CharNextEx)
LPSTR      CharPrev32A(LPCSTR,LPCSTR);
LPWSTR     CharPrev32W(LPCWSTR,LPCWSTR);
#define    CharPrev WINELIB_NAME_AW(CharPrev)
LPSTR      CharPrevEx32A(WORD,LPCSTR,LPCSTR,DWORD);
LPWSTR     CharPrevEx32W(WORD,LPCWSTR,LPCWSTR,DWORD);
#define    CharPrevEx WINELIB_NAME_AW(CharPrevEx)
LPSTR      CharUpper32A(LPSTR);
LPWSTR     CharUpper32W(LPWSTR);
#define    CharUpper WINELIB_NAME_AW(CharUpper)
DWORD      CharUpperBuff32A(LPSTR,DWORD);
DWORD      CharUpperBuff32W(LPWSTR,DWORD);
#define    CharUpperBuff WINELIB_NAME_AW(CharUpperBuff)
BOOL32     CharToOem32A(LPCSTR,LPSTR);
BOOL32     CharToOem32W(LPCWSTR,LPSTR);
#define    CharToOem WINELIB_NAME_AW(CharToOem)
BOOL32     CharToOemBuff32A(LPCSTR,LPSTR,DWORD);
BOOL32     CharToOemBuff32W(LPCWSTR,LPSTR,DWORD);
#define    CharToOemBuff WINELIB_NAME_AW(CharToOemBuff)
BOOL16     CheckDlgButton16(HWND16,INT16,UINT16);
BOOL32     CheckDlgButton32(HWND32,INT32,UINT32);
#define    CheckDlgButton WINELIB_NAME(CheckDlgButton)
BOOL16     CheckMenuItem16(HMENU16,UINT16,UINT16);
DWORD      CheckMenuItem32(HMENU32,UINT32,UINT32);
#define    CheckMenuItem WINELIB_NAME(CheckMenuItem)
BOOL16     CheckRadioButton16(HWND16,UINT16,UINT16,UINT16);
BOOL32     CheckRadioButton32(HWND32,UINT32,UINT32,UINT32);
#define    CheckRadioButton WINELIB_NAME(CheckRadioButton)
HWND16     ChildWindowFromPoint16(HWND16,POINT16);
HWND32     ChildWindowFromPoint32(HWND32,POINT32);
#define    ChildWindowFromPoint WINELIB_NAME(ChildWindowFromPoint)
BOOL16     Chord16(HDC16,INT16,INT16,INT16,INT16,INT16,INT16,INT16,INT16);
BOOL32     Chord32(HDC32,INT32,INT32,INT32,INT32,INT32,INT32,INT32,INT32);
#define    Chord WINELIB_NAME(Chord)
INT16      ClearCommBreak16(INT16);
BOOL32     ClearCommBreak32(INT32);
#define    ClearCommBreak WINELIB_NAME(ClearCommBreak)
BOOL16     ClientToScreen16(HWND16,LPPOINT16);
BOOL32     ClientToScreen32(HWND32,LPPOINT32);
#define    ClientToScreen WINELIB_NAME(ClientToScreen)
BOOL16     ClipCursor16(const RECT16*);
BOOL32     ClipCursor32(const RECT32*);
#define    ClipCursor WINELIB_NAME(ClipCursor)
BOOL16     CloseClipboard16(void);
BOOL32     CloseClipboard32(void);
#define    CloseClipboard WINELIB_NAME(CloseClipboard)
HMETAFILE16 CloseMetaFile16(HDC16);
HMETAFILE32 CloseMetaFile32(HDC32);
#define    CloseMetaFile WINELIB_NAME(CloseMetaFile)
BOOL16     CloseWindow16(HWND16);
BOOL32     CloseWindow32(HWND32);
#define    CloseWindow WINELIB_NAME(CloseWindow)
INT16      CombineRgn16(HRGN16,HRGN16,HRGN16,INT16);
INT32      CombineRgn32(HRGN32,HRGN32,HRGN32,INT32);
#define    CombineRgn WINELIB_NAME(CombineRgn)
UINT16     CompareString16(DWORD,DWORD,LPCSTR,DWORD,LPCSTR,DWORD);
UINT32     CompareString32A(DWORD,DWORD,LPCSTR,DWORD,LPCSTR,DWORD);
UINT32     CompareString32W(DWORD,DWORD,LPCWSTR,DWORD,LPCWSTR,DWORD);
#define    CompareString WINELIB_NAME_AW(CompareString)
HCURSOR16  CopyCursor16(HINSTANCE16,HCURSOR16);
#define    CopyCursor32(cur) ((HCURSOR32)CopyIcon32((HICON32)(cur)))
#define    CopyCursor WINELIB_NAME(CopyCursor)
HICON16    CopyIcon16(HINSTANCE16,HICON16);
HICON32    CopyIcon32(HICON32);
#define    CopyIcon WINELIB_NAME(CopyIcon)
LONG       CopyLZFile16(HFILE16,HFILE16);
LONG       CopyLZFile32(HFILE32,HFILE32);
#define    CopyLZFile WINELIB_NAME(CopyLZFile)
HMETAFILE16 CopyMetaFile16(HMETAFILE16,LPCSTR);
HMETAFILE32 CopyMetaFile32A(HMETAFILE32,LPCSTR);
HMETAFILE32 CopyMetaFile32W(HMETAFILE32,LPCWSTR);
#define    CopyMetaFile WINELIB_NAME_AW(CopyMetaFile)
BOOL16     CopyRect16(RECT16*,const RECT16*);
BOOL32     CopyRect32(RECT32*,const RECT32*);
#define    CopyRect WINELIB_NAME(CopyRect)
INT16      CountClipboardFormats16(void);
INT32      CountClipboardFormats32(void);
#define    CountClipboardFormats WINELIB_NAME(CountClipboardFormats)
INT16      CountVoiceNotes16(INT16);
DWORD      CountVoiceNotes32(DWORD);
#define    CountVoiceNotes WINELIB_NAME(CountVoiceNotes)
HBITMAP16  CreateBitmap16(INT16,INT16,UINT16,UINT16,LPCVOID);
HBITMAP32  CreateBitmap32(INT32,INT32,UINT32,UINT32,LPCVOID);
#define    CreateBitmap WINELIB_NAME(CreateBitmap)
HBITMAP16  CreateBitmapIndirect16(const BITMAP16*);
HBITMAP32  CreateBitmapIndirect32(const BITMAP32*);
#define    CreateBitmapIndirect WINELIB_NAME(CreateBitmapIndirect)
HBRUSH16   CreateBrushIndirect16(const LOGBRUSH16*);
HBRUSH32   CreateBrushIndirect32(const LOGBRUSH32*);
#define    CreateBrushIndirect WINELIB_NAME(CreateBrushIndirect)
VOID       CreateCaret16(HWND16,HBITMAP16,INT16,INT16);
BOOL32     CreateCaret32(HWND32,HBITMAP32,INT32,INT32);
#define    CreateCaret WINELIB_NAME(CreateCaret)
HBITMAP16  CreateCompatibleBitmap16(HDC16,INT16,INT16);
HBITMAP32  CreateCompatibleBitmap32(HDC32,INT32,INT32);
#define    CreateCompatibleBitmap WINELIB_NAME(CreateCompatibleBitmap)
HDC16      CreateCompatibleDC16(HDC16);
HDC32      CreateCompatibleDC32(HDC32);
#define    CreateCompatibleDC WINELIB_NAME(CreateCompatibleDC)
HCURSOR16  CreateCursor16(HINSTANCE16,INT16,INT16,INT16,INT16,LPCVOID,LPCVOID);
HCURSOR32  CreateCursor32(HINSTANCE32,INT32,INT32,INT32,INT32,LPCVOID,LPCVOID);
#define    CreateCursor WINELIB_NAME(CreateCursor)
HDC16      CreateDC16(LPCSTR,LPCSTR,LPCSTR,const DEVMODE16*);
HDC32      CreateDC32A(LPCSTR,LPCSTR,LPCSTR,const DEVMODE32A*);
HDC32      CreateDC32W(LPCWSTR,LPCWSTR,LPCWSTR,const DEVMODE32W*);
#define    CreateDC WINELIB_NAME_AW(CreateDC)
HWND16     CreateDialog16(HINSTANCE16,SEGPTR,HWND16,DLGPROC16);
#define    CreateDialog32A(inst,ptr,hwnd,dlg) \
           CreateDialogParam32A(inst,ptr,hwnd,dlg,0)
#define    CreateDialog32W(inst,ptr,hwnd,dlg) \
           CreateDialogParam32W(inst,ptr,hwnd,dlg,0)
#define    CreateDialog WINELIB_NAME_AW(CreateDialog)
HWND16     CreateDialogIndirect16(HINSTANCE16,LPCVOID,HWND16,DLGPROC16);
#define    CreateDialogIndirect32A(inst,ptr,hwnd,dlg) \
           CreateDialogIndirectParam32A(inst,ptr,hwnd,dlg,0)
#define    CreateDialogIndirect32W(inst,ptr,hwnd,dlg) \
           CreateDialogIndirectParam32W(inst,ptr,hwnd,dlg,0)
#define    CreateDialogIndirect WINELIB_NAME_AW(CreateDialogIndirect)
HWND16     CreateDialogIndirectParam16(HINSTANCE16,LPCVOID,HWND16,DLGPROC16,LPARAM);
HWND32     CreateDialogIndirectParam32A(HINSTANCE32,LPCVOID,HWND32,DLGPROC32,LPARAM);
HWND32     CreateDialogIndirectParam32W(HINSTANCE32,LPCVOID,HWND32,DLGPROC32,LPARAM);
#define    CreateDialogIndirectParam WINELIB_NAME_AW(CreateDialogIndirectParam)
HWND16     CreateDialogParam16(HINSTANCE16,SEGPTR,HWND16,DLGPROC16,LPARAM);
HWND32     CreateDialogParam32A(HINSTANCE32,LPCSTR,HWND32,DLGPROC32,LPARAM);
HWND32     CreateDialogParam32W(HINSTANCE32,LPCWSTR,HWND32,DLGPROC32,LPARAM);
#define    CreateDialogParam WINELIB_NAME_AW(CreateDialogParam)
HBITMAP16  CreateDIBitmap16(HDC16,const BITMAPINFOHEADER*,DWORD,LPCVOID,
                            const BITMAPINFO*,UINT16);
HBITMAP32  CreateDIBitmap32(HDC32,const BITMAPINFOHEADER*,DWORD,LPCVOID,
                            const BITMAPINFO*,UINT32);
#define    CreateDIBitmap WINELIB_NAME(CreateDIBitmap)
HBRUSH16   CreateDIBPatternBrush16(HGLOBAL16,UINT16);
HBRUSH32   CreateDIBPatternBrush32(HGLOBAL32,UINT32);
#define    CreateDIBPatternBrush WINELIB_NAME(CreateDIBPatternBrush)
BOOL16     CreateDirectory16(LPCSTR,LPVOID);
BOOL32     CreateDirectory32A(LPCSTR,LPSECURITY_ATTRIBUTES);
BOOL32     CreateDirectory32W(LPCWSTR,LPSECURITY_ATTRIBUTES);
#define    CreateDirectory WINELIB_NAME_AW(CreateDirectory)
BOOL32     CreateDirectoryEx32A(LPCSTR,LPCSTR,LPSECURITY_ATTRIBUTES);
BOOL32     CreateDirectoryEx32W(LPCWSTR,LPCWSTR,LPSECURITY_ATTRIBUTES);
#define    CreateDirectoryEx WINELIB_NAME_AW(CreateDirectoryEx)
HBITMAP16  CreateDiscardableBitmap16(HDC16,INT16,INT16);
HBITMAP32  CreateDiscardableBitmap32(HDC32,INT32,INT32);
#define    CreateDiscardableBitmap WINELIB_NAME(CreateDiscardableBitmap)
HRGN16     CreateEllipticRgn16(INT16,INT16,INT16,INT16);
HRGN32     CreateEllipticRgn32(INT32,INT32,INT32,INT32);
#define    CreateEllipticRgn WINELIB_NAME(CreateEllipticRgn)
HRGN16     CreateEllipticRgnIndirect16(const RECT16 *);
HRGN32     CreateEllipticRgnIndirect32(const RECT32 *);
#define    CreateEllipticRgnIndirect WINELIB_NAME(CreateEllipticRgnIndirect)
HFONT16    CreateFont16(INT16,INT16,INT16,INT16,INT16,BYTE,BYTE,BYTE,BYTE,BYTE,BYTE,BYTE,BYTE,LPCSTR);
HFONT32    CreateFont32A(INT32,INT32,INT32,INT32,INT32,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,LPCSTR);
HFONT32    CreateFont32W(INT32,INT32,INT32,INT32,INT32,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,LPCWSTR);
#define    CreateFont WINELIB_NAME_AW(CreateFont)
HFONT16    CreateFontIndirect16(const LOGFONT16*);
HFONT32    CreateFontIndirect32A(const LOGFONT32A*);
HFONT32    CreateFontIndirect32W(const LOGFONT32W*);
#define    CreateFontIndirect WINELIB_NAME_AW(CreateFontIndirect)
HBRUSH16   CreateHatchBrush16(INT16,COLORREF);
HBRUSH32   CreateHatchBrush32(INT32,COLORREF);
#define    CreateHatchBrush WINELIB_NAME(CreateHatchBrush)
HDC16      CreateIC16(LPCSTR,LPCSTR,LPCSTR,const DEVMODE16*);
HDC32      CreateIC32A(LPCSTR,LPCSTR,LPCSTR,const DEVMODE32A*);
HDC32      CreateIC32W(LPCWSTR,LPCWSTR,LPCWSTR,const DEVMODE32W*);
#define    CreateIC WINELIB_NAME_AW(CreateIC)
HICON16    CreateIcon16(HINSTANCE16,INT16,INT16,BYTE,BYTE,LPCVOID,LPCVOID);
HICON32    CreateIcon32(HINSTANCE32,INT32,INT32,BYTE,BYTE,LPCVOID,LPCVOID);
#define    CreateIcon WINELIB_NAME(CreateIcon)
HMENU16    CreateMenu16(void);
HMENU32    CreateMenu32(void);
#define    CreateMenu WINELIB_NAME(CreateMenu)
HDC16      CreateMetaFile16(LPCSTR);
HDC32      CreateMetaFile32A(LPCSTR);
HDC32      CreateMetaFile32W(LPCWSTR);
#define    CreateMetaFile WINELIB_NAME_AW(CreateMetaFile)
HPALETTE16 CreatePalette16(const LOGPALETTE*);
HPALETTE32 CreatePalette32(const LOGPALETTE*);
#define    CreatePalette WINELIB_NAME(CreatePalette)
HBRUSH16   CreatePatternBrush16(HBITMAP16);
HBRUSH32   CreatePatternBrush32(HBITMAP32);
#define    CreatePatternBrush WINELIB_NAME(CreatePatternBrush)
HPEN16     CreatePen16(INT16,INT16,COLORREF);
HPEN32     CreatePen32(INT32,INT32,COLORREF);
#define    CreatePen WINELIB_NAME(CreatePen)
HPEN16     CreatePenIndirect16(const LOGPEN16*);
HPEN32     CreatePenIndirect32(const LOGPEN32*);
#define    CreatePenIndirect WINELIB_NAME(CreatePenIndirect)
HRGN16     CreatePolyPolygonRgn16(const POINT16*,const INT16*,INT16,INT16);
HRGN32     CreatePolyPolygonRgn32(const POINT32*,const INT32*,INT32,INT32);
#define    CreatePolyPolygonRgn WINELIB_NAME(CreatePolyPolygonRgn)
HRGN16     CreatePolygonRgn16(const POINT16*,INT16,INT16);
HRGN32     CreatePolygonRgn32(const POINT32*,INT32,INT32);
#define    CreatePolygonRgn WINELIB_NAME(CreatePolygonRgn)
HMENU16    CreatePopupMenu16(void);
HMENU32    CreatePopupMenu32(void);
#define    CreatePopupMenu WINELIB_NAME(CreatePopupMenu)
HRGN16     CreateRectRgn16(INT16,INT16,INT16,INT16);
HRGN32     CreateRectRgn32(INT32,INT32,INT32,INT32);
#define    CreateRectRgn WINELIB_NAME(CreateRectRgn)
HRGN16     CreateRectRgnIndirect16(const RECT16*);
HRGN32     CreateRectRgnIndirect32(const RECT32*);
#define    CreateRectRgnIndirect WINELIB_NAME(CreateRectRgnIndirect)
HRGN16     CreateRoundRectRgn16(INT16,INT16,INT16,INT16,INT16,INT16);
HRGN32     CreateRoundRectRgn32(INT32,INT32,INT32,INT32,INT32,INT32);
#define    CreateRoundRectRgn WINELIB_NAME(CreateRoundRectRgn)
BOOL16     CreateScalableFontResource16(UINT16,LPCSTR,LPCSTR,LPCSTR);
BOOL32     CreateScalableFontResource32A(DWORD,LPCSTR,LPCSTR,LPCSTR);
BOOL32     CreateScalableFontResource32W(DWORD,LPCWSTR,LPCWSTR,LPCWSTR);
#define    CreateScalableFontResource WINELIB_NAME_AW(CreateScalableFontResource)
HBRUSH16   CreateSolidBrush16(COLORREF);
HBRUSH32   CreateSolidBrush32(COLORREF);
#define    CreateSolidBrush WINELIB_NAME(CreateSolidBrush)
HWND16     CreateWindow16(LPCSTR,LPCSTR,DWORD,INT16,INT16,INT16,INT16,HWND16,HMENU16,HINSTANCE16,LPVOID);
#define    CreateWindow32A(className,titleName,style,x,y,width,height,\
                           parent,menu,instance,param) \
           CreateWindowEx32A(0,className,titleName,style,x,y,width,height,\
                           parent,menu,instance,param)
#define    CreateWindow32W(className,titleName,style,x,y,width,height,\
                           parent,menu,instance,param) \
           CreateWindowEx32W(0,className,titleName,style,x,y,width,height,\
                           parent,menu,instance,param)
#define    CreateWindow WINELIB_NAME_AW(CreateWindow)
HWND16     CreateWindowEx16(DWORD,LPCSTR,LPCSTR,DWORD,INT16,INT16,INT16,INT16,HWND16,HMENU16,HINSTANCE16,LPVOID);
HWND32     CreateWindowEx32A(DWORD,LPCSTR,LPCSTR,DWORD,INT32,INT32,INT32,INT32,HWND32,HMENU32,HINSTANCE32,LPVOID);
HWND32     CreateWindowEx32W(DWORD,LPCWSTR,LPCWSTR,DWORD,INT32,INT32,INT32,INT32,HWND32,HMENU32,HINSTANCE32,LPVOID);
#define    CreateWindowEx WINELIB_NAME_AW(CreateWindowEx)
LRESULT    DefDlgProc16(HWND16,UINT16,WPARAM16,LPARAM);
LRESULT    DefDlgProc32A(HWND32,UINT32,WPARAM32,LPARAM);
LRESULT    DefDlgProc32W(HWND32,UINT32,WPARAM32,LPARAM);
#define    DefDlgProc WINELIB_NAME_AW(DefDlgProc)
HDWP16     DeferWindowPos16(HDWP16,HWND16,HWND16,INT16,INT16,INT16,INT16,UINT16);
HDWP32     DeferWindowPos32(HDWP32,HWND32,HWND32,INT32,INT32,INT32,INT32,UINT32);
#define    DeferWindowPos WINELIB_NAME(DeferWindowPos)
LRESULT    DefFrameProc16(HWND16,HWND16,UINT16,WPARAM16,LPARAM);
LRESULT    DefFrameProc32A(HWND32,HWND32,UINT32,WPARAM32,LPARAM);
LRESULT    DefFrameProc32W(HWND32,HWND32,UINT32,WPARAM32,LPARAM);
#define    DefFrameProc WINELIB_NAME_AW(DefFrameProc)
LRESULT    DefHookProc16(INT16,WPARAM16,LPARAM,HHOOK*);
#define    DefHookProc32(code,wparam,lparam,phhook) \
           CallNextHookEx32(*(phhook),code,wparam,lparam)
#define    DefHookProc WINELIB_NAME(DefHookProc)
LRESULT    DefMDIChildProc16(HWND16,UINT16,WPARAM16,LPARAM);
LRESULT    DefMDIChildProc32A(HWND32,UINT32,WPARAM32,LPARAM);
LRESULT    DefMDIChildProc32W(HWND32,UINT32,WPARAM32,LPARAM);
#define    DefMDIChildProc WINELIB_NAME_AW(DefMDIChildProc)
LRESULT    DefWindowProc16(HWND16,UINT16,WPARAM16,LPARAM);
LRESULT    DefWindowProc32A(HWND32,UINT32,WPARAM32,LPARAM);
LRESULT    DefWindowProc32W(HWND32,UINT32,WPARAM32,LPARAM);
#define    DefWindowProc WINELIB_NAME_AW(DefWindowProc)
ATOM       DeleteAtom16(ATOM);
ATOM       DeleteAtom32(ATOM);
#define    DeleteAtom WINELIB_NAME(DeleteAtom)
BOOL16     DeleteDC16(HDC16);
BOOL32     DeleteDC32(HDC32);
#define    DeleteDC WINELIB_NAME(DeleteDC)
BOOL16     DeleteFile16(LPCSTR);
BOOL32     DeleteFile32A(LPCSTR);
BOOL32     DeleteFile32W(LPCWSTR);
#define    DeleteFile WINELIB_NAME_AW(DeleteFile)
BOOL16     DeleteMenu16(HMENU16,UINT16,UINT16);
BOOL32     DeleteMenu32(HMENU32,UINT32,UINT32);
#define    DeleteMenu WINELIB_NAME(DeleteMenu)
BOOL16     DeleteMetaFile16(HMETAFILE16);
BOOL32     DeleteMetaFile32(HMETAFILE32);
#define    DeleteMetaFile WINELIB_NAME(DeleteMetaFile)
BOOL16     DeleteObject16(HGDIOBJ16);
BOOL32     DeleteObject32(HGDIOBJ32);
#define    DeleteObject WINELIB_NAME(DeleteObject)
VOID       DestroyCaret16(void);
BOOL32     DestroyCaret32(void);
#define    DestroyCaret WINELIB_NAME(DestroyCaret)
BOOL16     DestroyCursor16(HCURSOR16);
BOOL32     DestroyCursor32(HCURSOR32);
#define    DestroyCursor WINELIB_NAME(DestroyCursor)
BOOL16     DestroyIcon16(HICON16);
BOOL32     DestroyIcon32(HICON32);
#define    DestroyIcon WINELIB_NAME(DestroyIcon)
BOOL16     DestroyMenu16(HMENU16);
BOOL32     DestroyMenu32(HMENU32);
#define    DestroyMenu WINELIB_NAME(DestroyMenu)
BOOL16     DestroyWindow16(HWND16);
BOOL32     DestroyWindow32(HWND32);
#define    DestroyWindow WINELIB_NAME(DestroyWindow)
INT16      DialogBox16(HINSTANCE16,SEGPTR,HWND16,DLGPROC16);
#define    DialogBox32A(inst,template,owner,func) \
           DialogBoxParam32A(inst,template,owner,func,0)
#define    DialogBox32W(inst,template,owner,func) \
           DialogBoxParam32W(inst,template,owner,func,0)
#define    DialogBox WINELIB_NAME_AW(DialogBox)
INT16      DialogBoxIndirect16(HINSTANCE16,HANDLE16,HWND16,DLGPROC16);
#define    DialogBoxIndirect32A(inst,template,owner,func) \
           DialogBoxIndirectParam32A(inst,template,owner,func,0)
#define    DialogBoxIndirect32W(inst,template,owner,func) \
           DialogBoxIndirectParam32W(inst,template,owner,func,0)
#define    DialogBoxIndirect WINELIB_NAME_AW(DialogBoxIndirect)
INT16      DialogBoxIndirectParam16(HINSTANCE16,HANDLE16,HWND16,DLGPROC16,LPARAM);
INT32      DialogBoxIndirectParam32A(HINSTANCE32,LPCVOID,HWND32,DLGPROC32,LPARAM);
INT32      DialogBoxIndirectParam32W(HINSTANCE32,LPCVOID,HWND32,DLGPROC32,LPARAM);
#define    DialogBoxIndirectParam WINELIB_NAME_AW(DialogBoxIndirectParam)
INT16      DialogBoxParam16(HINSTANCE16,SEGPTR,HWND16,DLGPROC16,LPARAM);
INT32      DialogBoxParam32A(HINSTANCE32,LPCSTR,HWND32,DLGPROC32,LPARAM);
INT32      DialogBoxParam32W(HINSTANCE32,LPCWSTR,HWND32,DLGPROC32,LPARAM);
#define    DialogBoxParam WINELIB_NAME_AW(DialogBoxParam)
LONG       DispatchMessage16(const MSG16*);
LONG       DispatchMessage32A(const MSG32*);
LONG       DispatchMessage32W(const MSG32*);
#define    DispatchMessage WINELIB_NAME_AW(DispatchMessage)
INT16      DlgDirList16(HWND16,LPCSTR,INT16,INT16,UINT16);
INT32      DlgDirList32A(HWND32,LPCSTR,INT32,INT32,UINT32);
INT32      DlgDirList32W(HWND32,LPCWSTR,INT32,INT32,UINT32);
#define    DlgDirList WINELIB_NAME_AW(DlgDirList)
INT16      DlgDirListComboBox16(HWND16,LPCSTR,INT16,INT16,UINT16);
INT32      DlgDirListComboBox32A(HWND32,LPCSTR,INT32,INT32,UINT32);
INT32      DlgDirListComboBox32W(HWND32,LPCWSTR,INT32,INT32,UINT32);
#define    DlgDirListComboBox WINELIB_NAME_AW(DlgDirListComboBox)
BOOL16     DlgDirSelectComboBoxEx16(HWND16,LPSTR,INT16,INT16);
BOOL32     DlgDirSelectComboBoxEx32A(HWND32,LPSTR,INT32,INT32);
BOOL32     DlgDirSelectComboBoxEx32W(HWND32,LPWSTR,INT32,INT32);
#define    DlgDirSelectComboBoxEx WINELIB_NAME_AW(DlgDirSelectComboBoxEx)
BOOL16     DlgDirSelectEx16(HWND16,LPSTR,INT16,INT16);
BOOL32     DlgDirSelectEx32A(HWND32,LPSTR,INT32,INT32);
BOOL32     DlgDirSelectEx32W(HWND32,LPWSTR,INT32,INT32);
#define    DlgDirSelectEx WINELIB_NAME_AW(DlgDirSelectEx)
BOOL16     DPtoLP16(HDC16,LPPOINT16,INT16);
BOOL32     DPtoLP32(HDC32,LPPOINT32,INT32);
#define    DPtoLP WINELIB_NAME(DPtoLP)
BOOL16     DragDetect16(HWND16,POINT16);
BOOL32     DragDetect32(HWND32,POINT32);
#define    DragDetect WINELIB_NAME(DragDetect)
DWORD      DragObject16(HWND16,HWND16,UINT16,HANDLE16,WORD,HCURSOR16);
DWORD      DragObject32(HWND32,HWND32,UINT32,DWORD,HCURSOR32);
#define    DragObject WINELIB_NAME(DragObject)
BOOL16     DrawEdge16(HDC16,LPRECT16,UINT16,UINT16);
BOOL32     DrawEdge32(HDC32,LPRECT32,UINT32,UINT32);
#define    DrawEdge WINELIB_NAME(DrawEdge)
void       DrawFocusRect16(HDC16,const RECT16*);
void       DrawFocusRect32(HDC32,const RECT32*);
#define    DrawFocusRect WINELIB_NAME(DrawFocusRect)
BOOL16     DrawFrameControl16(HDC16,LPRECT16,UINT16,UINT16);
BOOL32     DrawFrameControl32(HDC32,LPRECT32,UINT32,UINT32);
#define    DrawFrameControl WINELIB_NAME(DrawFrameControl)
BOOL16     DrawIcon16(HDC16,INT16,INT16,HICON16);
BOOL32     DrawIcon32(HDC32,INT32,INT32,HICON32);
#define    DrawIcon WINELIB_NAME(DrawIcon)
VOID       DrawMenuBar16(HWND16);
BOOL32     DrawMenuBar32(HWND32);
#define    DrawMenuBar WINELIB_NAME(DrawMenuBar)
INT16      DrawText16(HDC16,LPCSTR,INT16,LPRECT16,UINT16);
INT32      DrawText32A(HDC32,LPCSTR,INT32,LPRECT32,UINT32);
INT32      DrawText32W(HDC32,LPCWSTR,INT32,LPRECT32,UINT32);
#define    DrawText WINELIB_NAME_AW(DrawText)
BOOL16     Ellipse16(HDC16,INT16,INT16,INT16,INT16);
BOOL32     Ellipse32(HDC32,INT32,INT32,INT32,INT32);
#define    Ellipse WINELIB_NAME(Ellipse)
BOOL16     EmptyClipboard16(void);
BOOL32     EmptyClipboard32(void);
#define    EmptyClipboard WINELIB_NAME(EmptyClipboard)
BOOL16     EnableMenuItem16(HMENU16,UINT16,UINT16);
BOOL32     EnableMenuItem32(HMENU32,UINT32,UINT32);
#define    EnableMenuItem WINELIB_NAME(EnableMenuItem)
BOOL16     EnableScrollBar16(HWND16,INT16,UINT16);
BOOL32     EnableScrollBar32(HWND32,INT32,UINT32);
#define    EnableScrollBar WINELIB_NAME(EnableScrollBar)
BOOL16     EnableWindow16(HWND16,BOOL16);
BOOL32     EnableWindow32(HWND32,BOOL32);
#define    EnableWindow WINELIB_NAME(EnableWindow)
BOOL16     EndDeferWindowPos16(HDWP16);
BOOL32     EndDeferWindowPos32(HDWP32);
#define    EndDeferWindowPos WINELIB_NAME(EndDeferWindowPos)
BOOL16     EndDialog16(HWND16,INT16);
BOOL32     EndDialog32(HWND32,INT32);
#define    EndDialog WINELIB_NAME(EndDialog)
BOOL16     EndPaint16(HWND16,const PAINTSTRUCT16*);
BOOL32     EndPaint32(HWND32,const PAINTSTRUCT32*);
#define    EndPaint WINELIB_NAME(EndPaint)
BOOL16     EnumChildWindows16(HWND16,WNDENUMPROC16,LPARAM);
BOOL32     EnumChildWindows32(HWND32,WNDENUMPROC32,LPARAM);
#define    EnumChildWindows WINELIB_NAME(EnumChildWindows)
UINT16     EnumClipboardFormats16(UINT16);
UINT32     EnumClipboardFormats32(UINT32);
#define    EnumClipboardFormats WINELIB_NAME(EnumClipboardFormats)
INT16      EnumFontFamilies16(HDC16,LPCSTR,FONTENUMPROC16,LPARAM);
INT32      EnumFontFamilies32A(HDC32,LPCSTR,FONTENUMPROC32A,LPARAM);
INT32      EnumFontFamilies32W(HDC32,LPCWSTR,FONTENUMPROC32W,LPARAM);
#define    EnumFontFamilies WINELIB_NAME_AW(EnumFontFamilies)
INT16      EnumFontFamiliesEx16(HDC16,LPLOGFONT16,FONTENUMPROCEX16,LPARAM,DWORD);
INT32      EnumFontFamiliesEx32A(HDC32,LPLOGFONT32A,FONTENUMPROCEX32A,LPARAM,DWORD);
INT32      EnumFontFamiliesEx32W(HDC32,LPLOGFONT32W,FONTENUMPROCEX32W,LPARAM,DWORD);
#define    EnumFontFamiliesEx WINELIB_NAME_AW(EnumFontFamiliesEx)
INT16      EnumFonts16(HDC16,LPCSTR,FONTENUMPROC16,LPARAM);
INT32      EnumFonts32A(HDC32,LPCSTR,FONTENUMPROC32A,LPARAM);
INT32      EnumFonts32W(HDC32,LPCWSTR,FONTENUMPROC32W,LPARAM);
#define    EnumFonts WINELIB_NAME_AW(EnumFonts)
BOOL16     EnumMetaFile16(HDC16,HMETAFILE16,MFENUMPROC16,LPARAM);
BOOL32     EnumMetaFile32(HDC32,HMETAFILE32,MFENUMPROC32,LPARAM);
#define    EnumMetaFile WINELIB_NAME(EnumMetaFile)
INT16      EnumObjects16(HDC16,INT16,GOBJENUMPROC16,LPARAM);
INT32      EnumObjects32(HDC32,INT32,GOBJENUMPROC32,LPARAM);
#define    EnumObjects WINELIB_NAME(EnumObjects)
INT16      EnumProps16(HWND16,PROPENUMPROC16);
INT32      EnumProps32A(HWND32,PROPENUMPROC32A);
INT32      EnumProps32W(HWND32,PROPENUMPROC32W);
#define    EnumProps WINELIB_NAME_AW(EnumProps)
BOOL16     EnumTaskWindows16(HTASK16,WNDENUMPROC16,LPARAM);
#define    EnumTaskWindows32(handle,proc,lparam) \
           EnumThreadWindows(handle,proc,lparam)
#define    EnumTaskWindows WINELIB_NAME(EnumTaskWindows)
BOOL16     EnumWindows16(WNDENUMPROC16,LPARAM);
BOOL32     EnumWindows32(WNDENUMPROC32,LPARAM);
#define    EnumWindows WINELIB_NAME(EnumWindows)
BOOL16     EqualRect16(const RECT16*,const RECT16*);
BOOL32     EqualRect32(const RECT32*,const RECT32*);
#define    EqualRect WINELIB_NAME(EqualRect)
BOOL16     EqualRgn16(HRGN16,HRGN16);
BOOL32     EqualRgn32(HRGN32,HRGN32);
#define    EqualRgn WINELIB_NAME(EqualRgn)
INT16      Escape16(HDC16,INT16,INT16,SEGPTR,SEGPTR);
INT32      Escape32(HDC32,INT32,INT32,LPVOID,LPVOID);
#define    Escape WINELIB_NAME(Escape)
LONG       EscapeCommFunction16(UINT16,UINT16);
BOOL32     EscapeCommFunction32(INT32,UINT32);
#define    EscapeCommFunction WINELIB_NAME(EscapeCommFunction)
INT16      ExcludeClipRect16(HDC16,INT16,INT16,INT16,INT16);
INT32      ExcludeClipRect32(HDC32,INT32,INT32,INT32,INT32);
#define    ExcludeClipRect WINELIB_NAME(ExcludeClipRect)
INT16      ExcludeUpdateRgn16(HDC16,HWND16);
INT32      ExcludeUpdateRgn32(HDC32,HWND32);
#define    ExcludeUpdateRgn WINELIB_NAME(ExcludeUpdateRgn)
BOOL16     ExitWindows16(DWORD,UINT16);
#define    ExitWindows32(a,b) ExitWindowsEx(EWX_LOGOFF,0xffffffff)
#define    ExitWindows WINELIB_NAME(ExitWindows)
BOOL16     ExtFloodFill16(HDC16,INT16,INT16,COLORREF,UINT16);
BOOL32     ExtFloodFill32(HDC32,INT32,INT32,COLORREF,UINT32);
#define    ExtFloodFill WINELIB_NAME(ExtFloodFill)
HICON16    ExtractIcon16(HINSTANCE16,LPCSTR,UINT16);
HICON32    ExtractIcon32A(HINSTANCE32,LPCSTR,UINT32);
HICON32    ExtractIcon32W(HINSTANCE32,LPCWSTR,UINT32);
#define    ExtractIcon WINELIB_NAME_AW(ExtractIcon)
BOOL16     ExtTextOut16(HDC16,INT16,INT16,UINT16,const RECT16*,LPCSTR,UINT16,const INT16*);
BOOL32     ExtTextOut32A(HDC32,INT32,INT32,UINT32,const RECT32*,LPCSTR,UINT32,const INT32*);
BOOL32     ExtTextOut32W(HDC32,INT32,INT32,UINT32,const RECT32*,LPCWSTR,UINT32,const INT32*);
#define    ExtTextOut WINELIB_NAME_AW(ExtTextOut)
void       FatalAppExit16(UINT16,LPCSTR);
void       FatalAppExit32A(UINT32,LPCSTR);
void       FatalAppExit32W(UINT32,LPCWSTR);
#define    FatalAppExit WINELIB_NAME_AW(FatalAppExit)
INT16      FillRect16(HDC16,const RECT16*,HBRUSH16);
INT32      FillRect32(HDC32,const RECT32*,HBRUSH32);
#define    FillRect WINELIB_NAME(FillRect)
BOOL16     FillRgn16(HDC16,HRGN16,HBRUSH16);
BOOL32     FillRgn32(HDC32,HRGN32,HBRUSH32);
#define    FillRgn WINELIB_NAME(FillRgn)
ATOM       FindAtom16(SEGPTR);
ATOM       FindAtom32A(LPCSTR);
ATOM       FindAtom32W(LPCWSTR);
#define    FindAtom WINELIB_NAME_AW(FindAtom)
BOOL16     FindClose16(HANDLE16);
BOOL32     FindClose32(HANDLE32);
#define    FindClose WINELIB_NAME(FindClose)
HINSTANCE16 FindExecutable16(LPCSTR,LPCSTR,LPSTR);
HINSTANCE32 FindExecutable32A(LPCSTR,LPCSTR,LPSTR);
HINSTANCE32 FindExecutable32W(LPCWSTR,LPCWSTR,LPWSTR);
#define    FindExecutable WINELIB_NAME_AW(FindExecutable)
HANDLE16   FindFirstFile16(LPCSTR,LPWIN32_FIND_DATA32A);
HANDLE32   FindFirstFile32A(LPCSTR,LPWIN32_FIND_DATA32A);
HANDLE32   FindFirstFile32W(LPCWSTR,LPWIN32_FIND_DATA32W);
#define    FindFirst WINELIB_NAME_AW(FindFirst)
BOOL16     FindNextFile16(HANDLE16,LPWIN32_FIND_DATA32A);
BOOL32     FindNextFile32A(HANDLE32,LPWIN32_FIND_DATA32A);
BOOL32     FindNextFile32W(HANDLE32,LPWIN32_FIND_DATA32W);
#define    FindNext WINELIB_NAME_AW(FindNext)
HRSRC16    FindResource16(HINSTANCE16,SEGPTR,SEGPTR);
HRSRC32    FindResource32A(HINSTANCE32,LPCSTR,LPCSTR);
HRSRC32    FindResource32W(HINSTANCE32,LPCWSTR,LPCWSTR);
#define    FindResource WINELIB_NAME_AW(FindResource)
HWND16     FindWindow16(SEGPTR,LPCSTR);
HWND32     FindWindow32A(LPCSTR,LPCSTR);
HWND32     FindWindow32W(LPCWSTR,LPCWSTR);
#define    FindWindow WINELIB_NAME_AW(FindWindow)
HWND16     FindWindowEx16(HWND16,HWND16,SEGPTR,LPCSTR);
HWND32     FindWindowEx32A(HWND32,HWND32,LPCSTR,LPCSTR);
HWND32     FindWindowEx32W(HWND32,HWND32,LPCWSTR,LPCWSTR);
#define    FindWindowEx WINELIB_NAME_AW(FindWindowEx)
BOOL16     FlashWindow16(HWND16,BOOL16);
BOOL32     FlashWindow32(HWND32,BOOL32);
#define    FlashWindow WINELIB_NAME(FlashWindow)
BOOL16     FloodFill16(HDC16,INT16,INT16,COLORREF);
BOOL32     FloodFill32(HDC32,INT32,INT32,COLORREF);
#define    FloodFill WINELIB_NAME(FloodFill)
INT16      FrameRect16(HDC16,const RECT16*,HBRUSH16);
INT32      FrameRect32(HDC32,const RECT32*,HBRUSH32);
#define    FrameRect WINELIB_NAME(FrameRect)
BOOL16     FrameRgn16(HDC16,HRGN16,HBRUSH16,INT16,INT16);
BOOL32     FrameRgn32(HDC32,HRGN32,HBRUSH32,INT32,INT32);
#define    FrameRgn WINELIB_NAME(FrameRgn)
VOID       FreeLibrary16(HINSTANCE16);
BOOL32     FreeLibrary32(HMODULE32);
#define    FreeLibrary WINELIB_NAME(FreeLibrary)
BOOL16     FreeModule16(HMODULE16);
#define    FreeModule32(handle) FreeLibrary32(handle)
#define    FreeModule WINELIB_NAME(FreeModule)
void       FreeProcInstance16(FARPROC16);
#define    FreeProcInstance32(proc) /*nothing*/
#define    FreeProcInstance WINELIB_NAME(FreeProcInstance)
BOOL16     FreeResource16(HGLOBAL16);
BOOL32     FreeResource32(HGLOBAL32);
#define    FreeResource WINELIB_NAME(FreeResource)
HWND16     GetActiveWindow16(void);
HWND32     GetActiveWindow32(void);
#define    GetActiveWindow WINELIB_NAME(GetActiveWindow)
DWORD      GetAppCompatFlags16(HTASK16);
DWORD      GetAppCompatFlags32(HTASK32);
#define    GetAppCompatFlags WINELIB_NAME(GetAppCompatFlags)
WORD       GetAsyncKeyState16(INT16);
WORD       GetAsyncKeyState32(INT32);
#define    GetAsyncKeyState WINELIB_NAME(GetAsyncKeyState)
UINT16     GetAtomName16(ATOM,LPSTR,INT16);
UINT32     GetAtomName32A(ATOM,LPSTR,INT32);
UINT32     GetAtomName32W(ATOM,LPWSTR,INT32);
#define    GetAtomName WINELIB_NAME_AW(GetAtomName)
LONG       GetBitmapBits16(HBITMAP16,LONG,LPVOID);
LONG       GetBitmapBits32(HBITMAP32,LONG,LPVOID);
#define    GetBitmapBits WINELIB_NAME(GetBitmapBits)
BOOL16     GetBitmapDimensionEx16(HBITMAP16,LPSIZE16);
BOOL32     GetBitmapDimensionEx32(HBITMAP32,LPSIZE32);
#define    GetBitmapDimensionEx WINELIB_NAME(GetBitmapDimensionEx)
BOOL16     GetBrushOrgEx16(HDC16,LPPOINT16);
BOOL32     GetBrushOrgEx32(HDC32,LPPOINT32);
#define    GetBrushOrgEx WINELIB_NAME(GetBrushOrgEx)
COLORREF   GetBkColor16(HDC16);
COLORREF   GetBkColor32(HDC32);
#define    GetBkColor WINELIB_NAME(GetBkColor)
INT16      GetBkMode16(HDC16);
INT32      GetBkMode32(HDC32);
#define    GetBkMode WINELIB_NAME(GetBkMode)
HWND16     GetCapture16(void);
HWND32     GetCapture32(void);
#define    GetCapture WINELIB_NAME(GetCapture)
UINT16     GetCaretBlinkTime16(void);
UINT32     GetCaretBlinkTime32(void);
#define    GetCaretBlinkTime WINELIB_NAME(GetCaretBlinkTime)
VOID       GetCaretPos16(LPPOINT16);
BOOL32     GetCaretPos32(LPPOINT32);
#define    GetCaretPos WINELIB_NAME(GetCaretPos)
BOOL16     GetCharABCWidths16(HDC16,UINT16,UINT16,LPABC16);
BOOL32     GetCharABCWidths32A(HDC32,UINT32,UINT32,LPABC32);
BOOL32     GetCharABCWidths32W(HDC32,UINT32,UINT32,LPABC32);
#define    GetCharABCWidths WINELIB_NAME_AW(GetCharABCWidths)
BOOL16     GetCharWidth16(HDC16,UINT16,UINT16,LPINT16);
BOOL32     GetCharWidth32A(HDC32,UINT32,UINT32,LPINT32);
BOOL32     GetCharWidth32W(HDC32,UINT32,UINT32,LPINT32);
#define    GetCharWidth WINELIB_NAME_AW(GetCharWidth)
BOOL16     GetClassInfo16(HINSTANCE16,SEGPTR,WNDCLASS16 *);
BOOL32     GetClassInfo32A(HINSTANCE32,LPCSTR,WNDCLASS32A *);
BOOL32     GetClassInfo32W(HINSTANCE32,LPCWSTR,WNDCLASS32W *);
#define    GetClassInfo WINELIB_NAME_AW(GetClassInfo)
BOOL16     GetClassInfoEx16(HINSTANCE16,SEGPTR,WNDCLASSEX16 *);
BOOL32     GetClassInfoEx32A(HINSTANCE32,LPCSTR,WNDCLASSEX32A *);
BOOL32     GetClassInfoEx32W(HINSTANCE32,LPCWSTR,WNDCLASSEX32W *);
#define    GetClassInfoEx WINELIB_NAME_AW(GetClassInfoEx)
LONG       GetClassLong16(HWND16,INT16);
LONG       GetClassLong32A(HWND32,INT32);
LONG       GetClassLong32W(HWND32,INT32);
#define    GetClassLong WINELIB_NAME_AW(GetClassLong)
INT16      GetClassName16(HWND16,LPSTR,INT16);
INT32      GetClassName32A(HWND32,LPSTR,INT32);
INT32      GetClassName32W(HWND32,LPWSTR,INT32);
#define    GetClassName WINELIB_NAME_AW(GetClassName)
WORD       GetClassWord16(HWND16,INT16);
WORD       GetClassWord32(HWND32,INT32);
#define    GetClassWord WINELIB_NAME(GetClassWord)
void       GetClientRect16(HWND16,LPRECT16);
void       GetClientRect32(HWND32,LPRECT32);
#define    GetClientRect WINELIB_NAME(GetClientRect)
HANDLE16   GetClipboardData16(UINT16);
HANDLE32   GetClipboardData32(UINT32);
#define    GetClipboardData WINELIB_NAME(GetClipboardData)
INT16      GetClipboardFormatName16(UINT16,LPSTR,INT16);
INT32      GetClipboardFormatName32A(UINT32,LPSTR,INT32);
INT32      GetClipboardFormatName32W(UINT32,LPWSTR,INT32);
#define    GetClipboardFormatName WINELIB_NAME_AW(GetClipboardFormatName)
HWND16     GetClipboardOwner16(void);
HWND32     GetClipboardOwner32(void);
#define    GetClipboardOwner WINELIB_NAME(GetClipboardOwner)
HWND16     GetClipboardViewer16(void);
HWND32     GetClipboardViewer32(void);
#define    GetClipboardViewer WINELIB_NAME(GetClipboardViewer)
INT16      GetClipBox16(HDC16,LPRECT16);
INT32      GetClipBox32(HDC32,LPRECT32);
#define    GetClipBox WINELIB_NAME(GetClipBox)
void       GetClipCursor16(LPRECT16);
void       GetClipCursor32(LPRECT32);
#define    GetClipCursor WINELIB_NAME(GetClipCursor)
HRGN16     GetClipRgn16(HDC16);
INT32      GetClipRgn32(HDC32,HRGN32);
#define    GetClipRgn WINELIB_NAME(GetClipRgn)
INT16      GetCommState16(INT16,LPDCB16);
BOOL32     GetCommState32(INT32,LPDCB32);
#define    GetCommState WINELIB_NAME(GetCommState)
UINT16     GetCurrentDirectory16(UINT16,LPSTR);
UINT32     GetCurrentDirectory32A(UINT32,LPSTR);
UINT32     GetCurrentDirectory32W(UINT32,LPWSTR);
#define    GetCurrentDirectory WINELIB_NAME_AW(GetCurrentDirectory)
BOOL16     GetCurrentPositionEx16(HDC16,LPPOINT16);
BOOL32     GetCurrentPositionEx32(HDC32,LPPOINT32);
#define    GetCurrentPositionEx WINELIB_NAME(GetCurrentPositionEx)
DWORD      GetCurrentTime16(void);
#define    GetCurrentTime32() GetTickCount()
#define    GetCurrentTime WINELIB_NAME(GetCurrentTime)
HCURSOR16  GetCursor16(void);
HCURSOR32  GetCursor32(void);
#define    GetCursor WINELIB_NAME(GetCursor)
void       GetCursorPos16(LPPOINT16);
void       GetCursorPos32(LPPOINT32);
#define    GetCursorPos WINELIB_NAME(GetCursorPos)
HDC16      GetDC16(HWND16);
HDC32      GetDC32(HWND32);
#define    GetDC WINELIB_NAME(GetDC)
HDC16      GetDCEx16(HWND16,HRGN16,DWORD);
HDC32      GetDCEx32(HWND32,HRGN32,DWORD);
#define    GetDCEx WINELIB_NAME(GetDCEx)
HWND16     GetDesktopWindow16(void);
HWND32     GetDesktopWindow32(void);
#define    GetDesktopWindow WINELIB_NAME(GetDesktopWindow)
INT16      GetDeviceCaps16(HDC16,INT16);
INT32      GetDeviceCaps32(HDC32,INT32);
#define    GetDeviceCaps WINELIB_NAME(GetDeviceCaps)
INT16      GetDIBits16(HDC16,HBITMAP16,UINT16,UINT16,LPSTR,LPBITMAPINFO,UINT16);
INT32      GetDIBits32(HDC32,HBITMAP32,UINT32,UINT32,LPSTR,LPBITMAPINFO,UINT32);
#define    GetDIBits WINELIB_NAME(GetDIBits)
BOOL16     GetDiskFreeSpace16(LPCSTR,LPDWORD,LPDWORD,LPDWORD,LPDWORD);
BOOL32     GetDiskFreeSpace32A(LPCSTR,LPDWORD,LPDWORD,LPDWORD,LPDWORD);
BOOL32     GetDiskFreeSpace32W(LPCWSTR,LPDWORD,LPDWORD,LPDWORD,LPDWORD);
#define    GetDiskFreeSpace WINELIB_NAME_AW(GetDiskFreeSpace)
INT16      GetDlgCtrlID16(HWND16);
INT32      GetDlgCtrlID32(HWND32);
#define    GetDlgCtrlID WINELIB_NAME(GetDlgCtrlID)
HWND16     GetDlgItem16(HWND16,INT16);
HWND32     GetDlgItem32(HWND32,INT32);
#define    GetDlgItem WINELIB_NAME(GetDlgItem)
UINT16     GetDlgItemInt16(HWND16,INT16,BOOL16*,BOOL16);
UINT32     GetDlgItemInt32(HWND32,INT32,BOOL32*,BOOL32);
#define    GetDlgItemInt WINELIB_NAME(GetDlgItemInt)
INT16      GetDlgItemText16(HWND16,INT16,SEGPTR,UINT16);
INT32      GetDlgItemText32A(HWND32,INT32,LPSTR,UINT32);
INT32      GetDlgItemText32W(HWND32,INT32,LPWSTR,UINT32);
#define    GetDlgItemText WINELIB_NAME_AW(GetDlgItemText)
UINT16     GetDoubleClickTime16(void);
UINT32     GetDoubleClickTime32(void);
#define    GetDoubleClickTime WINELIB_NAME(GetDoubleClickTime)
UINT16     GetDriveType16(UINT16); /* yes, the arguments differ */
UINT32     GetDriveType32A(LPCSTR);
UINT32     GetDriveType32W(LPCWSTR);
#define    GetDriveType WINELIB_NAME_AW(GetDriveType)
INT16      GetExpandedName16(LPCSTR,LPSTR);
INT32      GetExpandedName32A(LPCSTR,LPSTR);
INT32      GetExpandedName32W(LPCWSTR,LPWSTR);
#define    GetExpandedName WINELIB_NAME_AW(GetExpandedName)
DWORD      GetFileAttributes16(LPCSTR);
DWORD      GetFileAttributes32A(LPCSTR);
DWORD      GetFileAttributes32W(LPCWSTR);
#define    GetFileAttributes WINELIB_NAME_AW(GetFileAttributes)
DWORD      GetFileVersionInfoSize16(LPCSTR,LPDWORD);
DWORD      GetFileVersionInfoSize32A(LPCSTR,LPDWORD);
DWORD      GetFileVersionInfoSize32W(LPCWSTR,LPDWORD);
#define    GetFileVersionInfoSize WINELIB_NAME_AW(GetFileVersionInfoSize)
DWORD      GetFileVersionInfo16(LPCSTR,DWORD,DWORD,LPVOID);
DWORD      GetFileVersionInfo32A(LPCSTR,DWORD,DWORD,LPVOID);
DWORD      GetFileVersionInfo32W(LPCWSTR,DWORD,DWORD,LPVOID);
#define    GetFileVersionInfo WINELIB_NAME_AW(GetFileVersionInfo)
HWND16     GetFocus16(void);
HWND32     GetFocus32(void);
#define    GetFocus WINELIB_NAME(GetFocus)
DWORD      GetFreeSpace16(UINT16);
#define    GetFreeSpace32(w) (0x100000L)
#define    GetFreeSpace WINELIB_NAME(GetFreeSpace)
DWORD      GetGlyphOutLine16(HDC16,UINT16,UINT16,LPGLYPHMETRICS16,DWORD,LPVOID,const MAT2*);
DWORD      GetGlyphOutLine32A(HDC32,UINT32,UINT32,LPGLYPHMETRICS32,DWORD,LPVOID,const MAT2*);
DWORD      GetGlyphOutLine32W(HDC32,UINT32,UINT32,LPGLYPHMETRICS32,DWORD,LPVOID,const MAT2*);
#define    GetGlyphOutLine WINELIB_NAME_AW(GetGlyphOutLine)
BOOL16     GetInputState16(void);
BOOL32     GetInputState32(void);
#define    GetInputState WINELIB_NAME(GetInputState)
UINT16     GetInternalWindowPos16(HWND16,LPRECT16,LPPOINT16);
UINT32     GetInternalWindowPos32(HWND32,LPRECT32,LPPOINT32);
#define    GetInternalWindowPos WINELIB_NAME(GetInternalWindowPos)
INT16      GetKBCodePage16(void);
UINT32     GetKBCodePage32(void);
#define    GetKBCodePage WINELIB_NAME(GetKBCodePage)
INT16      GetKerningPairs16(HDC16,INT16,LPKERNINGPAIR16);
DWORD      GetKerningPairs32A(HDC32,DWORD,LPKERNINGPAIR32);
DWORD      GetKerningPairs32W(HDC32,DWORD,LPKERNINGPAIR32);
#define    GetKerningPairs WINELIB_NAME_AW(GetKerningPairs)
INT16      GetKeyboardType16(INT16);
INT32      GetKeyboardType32(INT32);
#define    GetKeyboardType WINELIB_NAME(GetKeyboardType)
INT16      GetKeyNameText16(LONG,LPSTR,INT16);
INT32      GetKeyNameText32A(LONG,LPSTR,INT32);
INT32      GetKeyNameText32W(LONG,LPWSTR,INT32);
#define    GetKeyNameText WINELIB_NAME_AW(GetKeyNameText)
WORD       GetKeyState16(INT16);
WORD       GetKeyState32(INT32);
#define    GetKeyState WINELIB_NAME(GetKeyState)
HWND16     GetLastActivePopup16(HWND16);
HWND32     GetLastActivePopup32(HWND32);
#define    GetLastActivePopup WINELIB_NAME(GetLastActivePopup)
UINT32     GetLogicalDriveStrings32A(UINT32,LPSTR);
UINT32     GetLogicalDriveStrings32W(UINT32,LPWSTR);
#define    GetLogicalDriveStrings WINELIB_NAME_AW(GetLogicalDriveStrings)
INT16      GetMapMode16(HDC16);
INT32      GetMapMode32(HDC32);
#define    GetMapMode WINELIB_NAME(GetMapMode)
HMENU16    GetMenu16(HWND16);
HMENU32    GetMenu32(HWND32);
#define    GetMenu WINELIB_NAME(GetMenu)
INT16      GetMenuItemCount16(HMENU16);
INT32      GetMenuItemCount32(HMENU32);
#define    GetMenuItemCount WINELIB_NAME(GetMenuItemCount)
UINT16     GetMenuItemID16(HMENU16,INT16);
UINT32     GetMenuItemID32(HMENU32,INT32);
#define    GetMenuItemID WINELIB_NAME(GetMenuItemID)
UINT16     GetMenuState16(HMENU16,UINT16,UINT16);
UINT32     GetMenuState32(HMENU32,UINT32,UINT32);
#define    GetMenuState WINELIB_NAME(GetMenuState)
INT16      GetMenuString16(HMENU16,UINT16,LPSTR,INT16,UINT16);
INT32      GetMenuString32A(HMENU32,UINT32,LPSTR,INT32,UINT32);
INT32      GetMenuString32W(HMENU32,UINT32,LPWSTR,INT32,UINT32);
#define    GetMenuString WINELIB_NAME_AW(GetMenuString)
BOOL16     GetMessage16(SEGPTR,HWND16,UINT16,UINT16);
BOOL32     GetMessage32A(LPMSG32,HWND32,UINT32,UINT32);
BOOL32     GetMessage32W(LPMSG32,HWND32,UINT32,UINT32);
#define    GetMessage WINELIB_NAME_AW(GetMessage)
HMETAFILE16 GetMetaFile16(LPCSTR);
HMETAFILE32 GetMetaFile32A(LPCSTR);
HMETAFILE32 GetMetaFile32W(LPCWSTR);
#define    GetMetaFile WINELIB_NAME_AW(GetMetaFile)
INT16      GetModuleFileName16(HINSTANCE16,LPSTR,INT16);
DWORD      GetModuleFileName32A(HMODULE32,LPSTR,DWORD);
DWORD      GetModuleFileName32W(HMODULE32,LPWSTR,DWORD);
#define    GetModuleFileName WINELIB_NAME_AW(GetModuleFileName)
HMODULE16  GetModuleHandle16(LPCSTR);
HMODULE32  GetModuleHandle32A(LPCSTR);
HMODULE32  GetModuleHandle32W(LPCSTR);
#define    GetModuleHandle WINELIB_NAME_AW(GetModuleHandle)
DWORD      GetNearestColor16(HDC16,DWORD);
DWORD      GetNearestColor32(HDC32,DWORD);
#define    GetNearestColor WINELIB_NAME(GetNearestColor)
UINT16     GetNearestPaletteIndex16(HPALETTE16,COLORREF);
UINT32     GetNearestPaletteIndex32(HPALETTE32,COLORREF);
#define    GetNearestPaletteIndex WINELIB_NAME(GetNearestPaletteIndex)
HWND16     GetNextDlgGroupItem16(HWND16,HWND16,BOOL16);
HWND32     GetNextDlgGroupItem32(HWND32,HWND32,BOOL32);
#define    GetNextDlgGroupItem WINELIB_NAME(GetNextDlgGroupItem)
HWND16     GetNextDlgTabItem16(HWND16,HWND16,BOOL16);
HWND32     GetNextDlgTabItem32(HWND32,HWND32,BOOL32);
#define    GetNextDlgTabItem WINELIB_NAME(GetNextDlgTabItem)
HWND16     GetNextWindow16(HWND16,WORD);
#define    GetNextWindow32 GetWindow32
#define    GetNextWindow WINELIB_NAME(GetNextWindow)
INT16      GetObject16(HANDLE16,INT16,LPVOID);
INT32      GetObject32A(HANDLE32,INT32,LPVOID);
INT32      GetObject32W(HANDLE32,INT32,LPVOID);
#define    GetObject WINELIB_NAME_AW(GetObject)
HWND16     GetOpenClipboardWindow16(void);
HWND32     GetOpenClipboardWindow32(void);
#define    GetOpenClipboardWindow WINELIB_NAME(GetOpenClipboardWindow)
UINT16     GetPaletteEntries16(HPALETTE16,UINT16,UINT16,LPPALETTEENTRY);
UINT32     GetPaletteEntries32(HPALETTE32,UINT32,UINT32,LPPALETTEENTRY);
#define    GetPaletteEntries WINELIB_NAME(GetPaletteEntries)
HWND16     GetParent16(HWND16);
HWND32     GetParent32(HWND32);
#define    GetParent WINELIB_NAME(GetParent)
COLORREF   GetPixel16(HDC16,INT16,INT16);
COLORREF   GetPixel32(HDC32,INT32,INT32);
#define    GetPixel WINELIB_NAME(GetPixel)
INT16      GetPolyFillMode16(HDC16);
INT32      GetPolyFillMode32(HDC32);
#define    GetPolyFillMode WINELIB_NAME(GetPolyFillMode)
INT16      GetPriorityClipboardFormat16(UINT16*,INT16);
INT32      GetPriorityClipboardFormat32(UINT32*,INT32);
#define    GetPriorityClipboardFormat WINELIB_NAME(GetPriorityClipboardFormat)
UINT16     GetPrivateProfileInt16(LPCSTR,LPCSTR,INT16,LPCSTR);
UINT32     GetPrivateProfileInt32A(LPCSTR,LPCSTR,INT32,LPCSTR);
UINT32     GetPrivateProfileInt32W(LPCWSTR,LPCWSTR,INT32,LPCWSTR);
#define    GetPrivateProfileInt WINELIB_NAME_AW(GetPrivateProfileInt)
INT16      GetPrivateProfileString16(LPCSTR,LPCSTR,LPCSTR,LPSTR,INT16,LPCSTR);
INT32      GetPrivateProfileString32A(LPCSTR,LPCSTR,LPCSTR,LPSTR,INT32,LPCSTR);
INT32      GetPrivateProfileString32W(LPCWSTR,LPCWSTR,LPCWSTR,LPWSTR,INT32,LPCWSTR);
#define    GetPrivateProfileString WINELIB_NAME_AW(GetPrivateProfileString)
FARPROC16  GetProcAddress16(HMODULE16,SEGPTR);
FARPROC32  GetProcAddress32(HMODULE32,LPCSTR);
#define    GetProcAddress WINELIB_NAME(GetProcAddress)
UINT16     GetProfileInt16(LPCSTR,LPCSTR,INT16);
UINT32     GetProfileInt32A(LPCSTR,LPCSTR,INT32);
UINT32     GetProfileInt32W(LPCWSTR,LPCWSTR,INT32);
#define    GetProfileInt WINELIB_NAME_AW(GetProfileInt)
INT16      GetProfileString16(LPCSTR,LPCSTR,LPCSTR,LPSTR,INT16);
INT32      GetProfileString32A(LPCSTR,LPCSTR,LPCSTR,LPSTR,INT32);
INT32      GetProfileString32W(LPCWSTR,LPCWSTR,LPCWSTR,LPWSTR,INT32);
#define    GetProfileString WINELIB_NAME_AW(GetProfileString)
HANDLE16   GetProp16(HWND16,LPCSTR);
HANDLE32   GetProp32A(HWND32,LPCSTR);
HANDLE32   GetProp32W(HWND32,LPCWSTR);
#define    GetProp WINELIB_NAME_AW(GetProp)
DWORD      GetQueueStatus16(UINT16);
DWORD      GetQueueStatus32(UINT32);
#define    GetQueueStatus WINELIB_NAME(GetQueueStatus)
BOOL16     GetRasterizerCaps16(LPRASTERIZER_STATUS,UINT16);
BOOL32     GetRasterizerCaps32(LPRASTERIZER_STATUS,UINT32);
#define    GetRasterizerCaps WINELIB_NAME(GetRasterizerCaps)
INT16      GetRelAbs16(HDC16);
INT32      GetRelAbs32(HDC32);
#define    GetRelAbs WINELIB_NAME(GetRelAbs)
INT16      GetRgnBox16(HRGN16,LPRECT16);
INT32      GetRgnBox32(HRGN32,LPRECT32);
#define    GetRgnBox WINELIB_NAME(GetRgnBox)
INT16      GetROP216(HDC16);
INT32      GetROP232(HDC32);
#define    GetROP2 WINELIB_NAME(GetROP2)
BOOL16     GetScrollInfo16(HWND16,INT16,LPSCROLLINFO);
BOOL32     GetScrollInfo32(HWND32,INT32,LPSCROLLINFO);
#define    GetScrollInfo WINELIB_NAME(GetScrollInfo)
INT16      GetScrollPos16(HWND16,INT16);
INT32      GetScrollPos32(HWND32,INT32);
#define    GetScrollPos WINELIB_NAME(GetScrollPos)
BOOL16     GetScrollRange16(HWND16,INT16,LPINT16,LPINT16);
BOOL32     GetScrollRange32(HWND32,INT32,LPINT32,LPINT32);
#define    GetScrollRange WINELIB_NAME(GetScrollRange)
HGDIOBJ16  GetStockObject16(INT16);
HGDIOBJ32  GetStockObject32(INT32);
#define    GetStockObject WINELIB_NAME(GetStockObject)
INT16      GetStretchBltMode16(HDC16);
INT32      GetStretchBltMode32(HDC32);
#define    GetStretchBltMode WINELIB_NAME(GetStretchBltMode)
BOOL16     GetStringType16(LCID,DWORD,LPCSTR,INT16,LPWORD);
BOOL32     GetStringType32A(LCID,DWORD,LPCSTR,INT32,LPWORD);
BOOL32     GetStringType32W(DWORD,LPCWSTR,INT32,LPWORD);
#define    GetStringType WINELIB_NAME_AW(GetStringType)
HMENU16    GetSubMenu16(HMENU16,INT16);
HMENU32    GetSubMenu32(HMENU32,INT32);
#define    GetSubMenu WINELIB_NAME(GetSubMenu)
COLORREF   GetSysColor16(INT16);
COLORREF   GetSysColor32(INT32);
#define    GetSysColor WINELIB_NAME(GetSysColor)
HBRUSH16   GetSysColorBrush16(INT16);
HBRUSH32   GetSysColorBrush32(INT32);
#define    GetSysColorBrush WINELIB_NAME(GetSysColorBrush)
HWND16     GetSysModalWindow16(void);
#define    GetSysModalWindow32() ((HWND32)0)
#define    GetSysModalWindow WINELIB_NAME(GetSysModalWindow)
UINT16     GetSystemDirectory16(LPSTR,UINT16);
UINT32     GetSystemDirectory32A(LPSTR,UINT32);
UINT32     GetSystemDirectory32W(LPWSTR,UINT32);
#define    GetSystemDirectory WINELIB_NAME_AW(GetSystemDirectory)
HMENU16    GetSystemMenu16(HWND16,BOOL16);
HMENU32    GetSystemMenu32(HWND32,BOOL32);
#define    GetSystemMenu WINELIB_NAME(GetSystemMenu)
INT16      GetSystemMetrics16(INT16);
INT32      GetSystemMetrics32(INT32);
#define    GetSystemMetrics WINELIB_NAME(GetSystemMetrics)
UINT16     GetSystemPaletteEntries16(HDC16,UINT16,UINT16,LPPALETTEENTRY);
UINT32     GetSystemPaletteEntries32(HDC32,UINT32,UINT32,LPPALETTEENTRY);
#define    GetSystemPaletteEntries WINELIB_NAME(GetSystemPaletteEntries)
UINT16     GetSystemPaletteUse16(HDC16);
UINT32     GetSystemPaletteUse32(HDC32);
#define    GetSystemPaletteUse WINELIB_NAME(GetSystemPaletteUse)
DWORD      GetTabbedTextExtent16(HDC16,LPCSTR,INT16,INT16,const INT16*);
DWORD      GetTabbedTextExtent32A(HDC32,LPCSTR,INT32,INT32,const INT32*);
DWORD      GetTabbedTextExtent32W(HDC32,LPCWSTR,INT32,INT32,const INT32*);
#define    GetTabbedTextExtent WINELIB_NAME_AW(GetTabbedTextExtent)
UINT16     GetTempFileName16(BYTE,LPCSTR,UINT16,LPSTR);
UINT32     GetTempFileName32A(LPCSTR,LPCSTR,UINT32,LPSTR);
UINT32     GetTempFileName32W(LPCWSTR,LPCWSTR,UINT32,LPWSTR);
#define    GetTempFileName WINELIB_NAME_AW(GetTempFileName)
UINT32     GetTempPath32A(UINT32,LPSTR);
UINT32     GetTempPath32W(UINT32,LPWSTR);
#define    GetTempPath WINELIB_NAME_AW(GetTempPath)
UINT16     GetTextAlign16(HDC16);
UINT32     GetTextAlign32(HDC32);
#define    GetTextAlign WINELIB_NAME(GetTextAlign)
INT16      GetTextCharacterExtra16(HDC16);
INT32      GetTextCharacterExtra32(HDC32);
#define    GetTextCharacterExtra WINELIB_NAME(GetTextCharacterExtra)
COLORREF   GetTextColor16(HDC16);
COLORREF   GetTextColor32(HDC32);
#define    GetTextColor WINELIB_NAME(GetTextColor)
BOOL16     GetTextExtentPoint16(HDC16,LPCSTR,INT16,LPSIZE16);
BOOL32     GetTextExtentPoint32A(HDC32,LPCSTR,INT32,LPSIZE32);
BOOL32     GetTextExtentPoint32W(HDC32,LPCWSTR,INT32,LPSIZE32);
#define    GetTextExtentPoint WINELIB_NAME_AW(GetTextExtentPoint)
INT16      GetTextFace16(HDC16,INT16,LPSTR);
INT32      GetTextFace32A(HDC32,INT32,LPSTR);
INT32      GetTextFace32W(HDC32,INT32,LPWSTR);
#define    GetTextFace WINELIB_NAME_AW(GetTextFace)
BOOL16     GetTextMetrics16(HDC16,LPTEXTMETRIC16);
BOOL32     GetTextMetrics32A(HDC32,LPTEXTMETRIC32A);
BOOL32     GetTextMetrics32W(HDC32,LPTEXTMETRIC32W);
#define    GetTextMetrics WINELIB_NAME_AW(GetTextMetrics)
LPINT16    GetThresholdEvent16(void);
LPDWORD    GetThresholdEvent32(void);
#define    GetThresholdEvent WINELIB_NAME(GetThresholdEvent)
INT16      GetThresholdStatus16(void);
DWORD      GetThresholdStatus32(void);
#define    GetThresholdStatus WINELIB_NAME(GetThresholdStatus)
HWND16     GetTopWindow16(HWND16);
HWND32     GetTopWindow32(HWND32);
#define    GetTopWindow WINELIB_NAME(GetTopWindow)
BOOL16     GetUpdateRect16(HWND16,LPRECT16,BOOL16);
BOOL32     GetUpdateRect32(HWND32,LPRECT32,BOOL32);
#define    GetUpdateRect WINELIB_NAME(GetUpdateRect)
INT16      GetUpdateRgn16(HWND16,HRGN16,BOOL16);
INT32      GetUpdateRgn32(HWND32,HRGN32,BOOL32);
#define    GetUpdateRgn WINELIB_NAME(GetUpdateRgn)
LONG       GetVersion16(void);
LONG       GetVersion32(void);
#define    GetVersion WINELIB_NAME(GetVersion)
BOOL16     GetViewportExtEx16(HDC16,LPPOINT16);
BOOL32     GetViewportExtEx32(HDC32,LPPOINT32);
#define    GetViewportExtEx WINELIB_NAME(GetViewportExtEx)
BOOL16     GetViewportOrgEx16(HDC16,LPPOINT16);
BOOL32     GetViewportOrgEx32(HDC32,LPPOINT32);
#define    GetViewportOrgEx WINELIB_NAME(GetViewportOrgEx)
BOOL32     GetVolumeInformation32A(LPCSTR,LPSTR,DWORD,LPDWORD,LPDWORD,LPDWORD,LPSTR,DWORD);
BOOL32     GetVolumeInformation32W(LPCWSTR,LPWSTR,DWORD,LPDWORD,LPDWORD,LPDWORD,LPWSTR,DWORD);
#define    GetVolumeInformation WINELIB_NAME_AW(GetVolumeInformation)
HWND16     GetWindow16(HWND16,WORD);
HWND32     GetWindow32(HWND32,WORD);
#define    GetWindow WINELIB_NAME(GetWindow)
HDC16      GetWindowDC16(HWND16);
HDC32      GetWindowDC32(HWND32);
#define    GetWindowDC WINELIB_NAME(GetWindowDC)
BOOL16     GetWindowExtEx16(HDC16,LPPOINT16);
BOOL32     GetWindowExtEx32(HDC32,LPPOINT32);
#define    GetWindowExtEx WINELIB_NAME(GetWindowExtEx)
LONG       GetWindowLong16(HWND16,INT16);
LONG       GetWindowLong32A(HWND32,INT32);
LONG       GetWindowLong32W(HWND32,INT32);
#define    GetWindowLong WINELIB_NAME_AW(GetWindowLong)
BOOL16     GetWindowOrgEx16(HDC16,LPPOINT16);
BOOL32     GetWindowOrgEx32(HDC32,LPPOINT32);
#define    GetWindowOrgEx WINELIB_NAME(GetWindowOrgEx)
BOOL16     GetWindowPlacement16(HWND16,LPWINDOWPLACEMENT16);
BOOL32     GetWindowPlacement32(HWND32,LPWINDOWPLACEMENT32);
#define    GetWindowPlacement WINELIB_NAME(GetWindowPlacement)
void       GetWindowRect16(HWND16,LPRECT16);
void       GetWindowRect32(HWND32,LPRECT32);
#define    GetWindowRect WINELIB_NAME(GetWindowRect)
UINT16     GetWindowsDirectory16(LPSTR,UINT16);
UINT32     GetWindowsDirectory32A(LPSTR,UINT32);
UINT32     GetWindowsDirectory32W(LPWSTR,UINT32);
#define    GetWindowsDirectory WINELIB_NAME_AW(GetWindowsDirectory)
HTASK16    GetWindowTask16(HWND16);
#define    GetWindowTask32(hwnd) ((HTASK32)GetWindowThreadProcessId(hwnd,NULL))
#define    GetWindowTask WINELIB_NAME(GetWindowTask)
INT16      GetWindowText16(HWND16,SEGPTR,INT16);
INT32      GetWindowText32A(HWND32,LPSTR,INT32);
INT32      GetWindowText32W(HWND32,LPWSTR,INT32);
#define    GetWindowText WINELIB_NAME_AW(GetWindowText)
INT16      GetWindowTextLength16(HWND16);
INT32      GetWindowTextLength32A(HWND32);
INT32      GetWindowTextLength32W(HWND32);
#define    GetWindowTextLength WINELIB_NAME_AW(GetWindowTextLength)
WORD       GetWindowWord16(HWND16,INT16);
WORD       GetWindowWord32(HWND32,INT32);
#define    GetWindowWord WINELIB_NAME(GetWindowWord)
ATOM       GlobalAddAtom16(SEGPTR);
ATOM       GlobalAddAtom32A(LPCSTR);
ATOM       GlobalAddAtom32W(LPCWSTR);
#define    GlobalAddAtom WINELIB_NAME_AW(GlobalAddAtom)
HGLOBAL16  GlobalAlloc16(UINT16,DWORD);
HGLOBAL32  GlobalAlloc32(UINT32,DWORD);
#define    GlobalAlloc WINELIB_NAME(GlobalAlloc)
DWORD      GlobalCompact16(DWORD);
DWORD      GlobalCompact32(DWORD);
#define    GlobalCompact WINELIB_NAME(GlobalCompact)
UINT16     GlobalFlags16(HGLOBAL16);
UINT32     GlobalFlags32(HGLOBAL32);
#define    GlobalFlags WINELIB_NAME(GlobalFlags)
ATOM       GlobalFindAtom16(SEGPTR);
ATOM       GlobalFindAtom32A(LPCSTR);
ATOM       GlobalFindAtom32W(LPCWSTR);
#define    GlobalFindAtom WINELIB_NAME_AW(GlobalFindAtom)
HGLOBAL16  GlobalFree16(HGLOBAL16);
HGLOBAL32  GlobalFree32(HGLOBAL32);
#define    GlobalFree WINELIB_NAME(GlobalFree)
UINT16     GlobalGetAtomName16(ATOM,LPSTR,INT16);
UINT32     GlobalGetAtomName32A(ATOM,LPSTR,INT32);
UINT32     GlobalGetAtomName32W(ATOM,LPWSTR,INT32);
#define    GlobalGetAtomName WINELIB_NAME_AW(GlobalGetAtomName)
DWORD      GlobalHandle16(WORD);
HGLOBAL32  GlobalHandle32(LPCVOID);
#define    GlobalHandle WINELIB_NAME(GlobalHandle)
VOID       GlobalFix16(HGLOBAL16);
VOID       GlobalFix32(HGLOBAL32);
#define    GlobalFix WINELIB_NAME(GlobalFix)
LPVOID     GlobalLock16(HGLOBAL16);
LPVOID     GlobalLock32(HGLOBAL32);
#define    GlobalLock WINELIB_NAME(GlobalLock)
HGLOBAL16  GlobalReAlloc16(HGLOBAL16,DWORD,UINT16);
HGLOBAL32  GlobalReAlloc32(HGLOBAL32,DWORD,UINT32);
#define    GlobalReAlloc WINELIB_NAME(GlobalReAlloc)
DWORD      GlobalSize16(HGLOBAL16);
DWORD      GlobalSize32(HGLOBAL32);
#define    GlobalSize WINELIB_NAME(GlobalSize)
VOID       GlobalUnfix16(HGLOBAL16);
VOID       GlobalUnfix32(HGLOBAL32);
#define    GlobalUnfix WINELIB_NAME(GlobalUnfix)
BOOL16     GlobalUnlock16(HGLOBAL16);
BOOL32     GlobalUnlock32(HGLOBAL32);
#define    GlobalUnlock WINELIB_NAME(GlobalUnlock)
BOOL16     GlobalUnWire16(HGLOBAL16);
BOOL32     GlobalUnWire32(HGLOBAL32);
#define    GlobalUnWire WINELIB_NAME(GlobalUnWire)
SEGPTR     GlobalWire16(HGLOBAL16);
LPVOID     GlobalWire32(HGLOBAL32);
#define    GlobalWire WINELIB_NAME(GlobalWire)
BOOL16     GrayString16(HDC16,HBRUSH16,GRAYSTRINGPROC16,LPARAM,
                        INT16,INT16,INT16,INT16,INT16);
BOOL32     GrayString32A(HDC32,HBRUSH32,GRAYSTRINGPROC32,LPARAM,
                         INT32,INT32,INT32,INT32,INT32);
BOOL32     GrayString32W(HDC32,HBRUSH32,GRAYSTRINGPROC32,LPARAM,
                         INT32,INT32,INT32,INT32,INT32);
#define    GrayString WINELIB_NAME_AW(GrayString)
VOID       HideCaret16(HWND16);
BOOL32     HideCaret32(HWND32);
#define    HideCaret WINELIB_NAME(HideCaret)
BOOL16     HiliteMenuItem16(HWND16,HMENU16,UINT16,UINT16);
BOOL32     HiliteMenuItem32(HWND32,HMENU32,UINT32,UINT32);
#define    HiliteMenuItem WINELIB_NAME(HiliteMenuItem)
void       InflateRect16(LPRECT16,INT16,INT16);
void       InflateRect32(LPRECT32,INT32,INT32);
#define    InflateRect WINELIB_NAME(InflateRect)
WORD       InitAtomTable16(WORD);
BOOL32     InitAtomTable32(DWORD);
#define    InitAtomTable WINELIB_NAME(InitAtomTable)
BOOL16     InSendMessage16(void);
BOOL32     InSendMessage32(void);
#define    InSendMessage WINELIB_NAME(InSendMessage)
BOOL16     InsertMenu16(HMENU16,UINT16,UINT16,UINT16,SEGPTR);
BOOL32     InsertMenu32A(HMENU32,UINT32,UINT32,UINT32,LPCSTR);
BOOL32     InsertMenu32W(HMENU32,UINT32,UINT32,UINT32,LPCWSTR);
#define    InsertMenu WINELIB_NAME_AW(InsertMenu)
INT16      IntersectClipRect16(HDC16,INT16,INT16,INT16,INT16);
INT32      IntersectClipRect32(HDC32,INT32,INT32,INT32,INT32);
#define    IntersectClipRect WINELIB_NAME(IntersectClipRect)
BOOL16     IntersectRect16(LPRECT16,const RECT16*,const RECT16*);
BOOL32     IntersectRect32(LPRECT32,const RECT32*,const RECT32*);
#define    IntersectRect WINELIB_NAME(IntersectRect)
void       InvalidateRect16(HWND16,const RECT16*,BOOL16);
void       InvalidateRect32(HWND32,const RECT32*,BOOL32);
#define    InvalidateRect WINELIB_NAME(InvalidateRect)
void       InvalidateRgn16(HWND16,HRGN16,BOOL16);
void       InvalidateRgn32(HWND32,HRGN32,BOOL32);
#define    InvalidateRgn WINELIB_NAME(InvalidateRgn)
void       InvertRect16(HDC16,const RECT16*);
void       InvertRect32(HDC32,const RECT32*);
#define    InvertRect WINELIB_NAME(InvertRect)
BOOL16     InvertRgn16(HDC16,HRGN16);
BOOL32     InvertRgn32(HDC32,HRGN32);
#define    InvertRgn WINELIB_NAME(InvertRgn)
BOOL16     IsBadCodePtr16(SEGPTR);
BOOL32     IsBadCodePtr32(FARPROC32);
#define    IsBadCodePtr WINELIB_NAME(IsBadCodePtr)
BOOL16     IsBadHugeReadPtr16(SEGPTR,DWORD);
BOOL32     IsBadHugeReadPtr32(LPCVOID,UINT32);
#define    IsBadHugeReadPtr WINELIB_NAME(IsBadHugeReadPtr)
BOOL16     IsBadHugeWritePtr16(SEGPTR,DWORD);
BOOL32     IsBadHugeWritePtr32(LPVOID,UINT32);
#define    IsBadHugeWritePtr WINELIB_NAME(IsBadHugeWritePtr)
BOOL16     IsBadReadPtr16(SEGPTR,UINT16);
BOOL32     IsBadReadPtr32(LPCVOID,UINT32);
#define    IsBadReadPtr WINELIB_NAME(IsBadReadPtr)
BOOL16     IsBadStringPtr16(SEGPTR,UINT16);
BOOL32     IsBadStringPtr32A(LPCSTR,UINT32);
BOOL32     IsBadStringPtr32W(LPCWSTR,UINT32);
#define    IsBadStringPtr WINELIB_NAME_AW(IsBadStringPtr)
BOOL16     IsBadWritePtr16(SEGPTR,UINT16);
BOOL32     IsBadWritePtr32(LPVOID,UINT32);
#define    IsBadWritePtr WINELIB_NAME(IsBadWritePtr)
BOOL16     IsCharAlpha16(CHAR);
BOOL32     IsCharAlpha32A(CHAR);
BOOL32     IsCharAlpha32W(WCHAR);
#define    IsCharAlpha WINELIB_NAME_AW(IsCharAlpha)
BOOL16     IsCharAlphaNumeric16(CHAR);
BOOL32     IsCharAlphaNumeric32A(CHAR);
BOOL32     IsCharAlphaNumeric32W(WCHAR);
#define    IsCharAlphaNumeric WINELIB_NAME_AW(IsCharAlphaNumeric)
BOOL16     IsCharLower16(CHAR);
BOOL32     IsCharLower32A(CHAR);
BOOL32     IsCharLower32W(WCHAR);
#define    IsCharLower WINELIB_NAME_AW(IsCharLower)
BOOL16     IsCharUpper16(CHAR);
BOOL32     IsCharUpper32A(CHAR);
BOOL32     IsCharUpper32W(WCHAR);
#define    IsCharUpper WINELIB_NAME_AW(IsCharUpper)
BOOL16     IsChild16(HWND16,HWND16);
BOOL32     IsChild32(HWND32,HWND32);
#define    IsChild WINELIB_NAME(IsChild)
BOOL16     IsClipboardFormatAvailable16(UINT16);
BOOL32     IsClipboardFormatAvailable32(UINT32);
#define    IsClipboardFormatAvailable WINELIB_NAME(IsClipboardFormatAvailable)
BOOL16     IsDBCSLeadByte16(BYTE);
BOOL32     IsDBCSLeadByte32(BYTE);
#define    IsDBCSLeadByte WINELIB_NAME(IsDBCSLeadByte)
BOOL16     IsDialogMessage16(HWND16,LPMSG16);
BOOL32     IsDialogMessage32A(HWND32,LPMSG32);
BOOL32     IsDialogMessage32W(HWND32,LPMSG32);
#define    IsDialogMessage WINELIB_NAME(IsDialogMessage)
UINT16     IsDlgButtonChecked16(HWND16,UINT16);
UINT32     IsDlgButtonChecked32(HWND32,UINT32);
#define    IsDlgButtonChecked WINELIB_NAME(IsDlgButtonChecked)
BOOL16     IsIconic16(HWND16);
BOOL32     IsIconic32(HWND32);
#define    IsIconic WINELIB_NAME(IsIconic)
BOOL16     IsMenu16(HMENU16);
BOOL32     IsMenu32(HMENU32);
#define    IsMenu WINELIB_NAME(IsMenu)
BOOL16     IsRectEmpty16(const RECT16*);
BOOL32     IsRectEmpty32(const RECT32*);
#define    IsRectEmpty WINELIB_NAME(IsRectEmpty)
BOOL16     IsWindow16(HWND16);
BOOL32     IsWindow32(HWND32);
#define    IsWindow WINELIB_NAME(IsWindow)
BOOL16     IsWindowEnabled16(HWND16);
BOOL32     IsWindowEnabled32(HWND32);
#define    IsWindowEnabled WINELIB_NAME(IsWindowEnabled)
BOOL16     IsWindowVisible16(HWND16);
BOOL32     IsWindowVisible32(HWND32);
#define    IsWindowVisible WINELIB_NAME(IsWindowVisible)
BOOL16     IsZoomed16(HWND16);
BOOL32     IsZoomed32(HWND32);
#define    IsZoomed WINELIB_NAME(IsZoomed)
BOOL16     KillSystemTimer16(HWND16,UINT16);
BOOL32     KillSystemTimer32(HWND32,UINT32);
#define    KillSystemTimer WINELIB_NAME(KillSystemTimer)
BOOL16     KillTimer16(HWND16,UINT16);
BOOL32     KillTimer32(HWND32,UINT32);
#define    KillTimer WINELIB_NAME(KillTimer)
HFILE16    LZOpenFile16(LPCSTR,LPOFSTRUCT,UINT16);
HFILE32    LZOpenFile32A(LPCSTR,LPOFSTRUCT,UINT32);
HFILE32    LZOpenFile32W(LPCWSTR,LPOFSTRUCT,UINT32);
#define    LZOpenFile WINELIB_NAME_AW(LZOpenFile)
INT16      LZRead16(HFILE16,LPVOID,UINT16); 
INT32      LZRead32(HFILE32,LPVOID,UINT32); 
#define    LZRead WINELIB_NAME(LZRead)
INT16      LZStart16(void);
INT32      LZStart32(void);
#define    LZStart WINELIB_NAME(LZStart)
VOID       LineDDA16(INT16,INT16,INT16,INT16,LINEDDAPROC16,LPARAM);
BOOL32     LineDDA32(INT32,INT32,INT32,INT32,LINEDDAPROC32,LPARAM);
#define    LineDDA WINELIB_NAME(LineDDA)
BOOL16     LineTo16(HDC16,INT16,INT16);
BOOL32     LineTo32(HDC32,INT32,INT32);
#define    LineTo WINELIB_NAME(LineTo)
HACCEL16   LoadAccelerators16(HINSTANCE16,SEGPTR);
HACCEL32   LoadAccelerators32A(HINSTANCE32,LPCSTR);
HACCEL32   LoadAccelerators32W(HINSTANCE32,LPCWSTR);
#define    LoadAccelerators WINELIB_NAME_AW(LoadAccelerators)
HBITMAP16  LoadBitmap16(HANDLE16,SEGPTR);
HBITMAP32  LoadBitmap32A(HANDLE32,LPCSTR);
HBITMAP32  LoadBitmap32W(HANDLE32,LPCWSTR);
#define    LoadBitmap WINELIB_NAME(LoadBitmap)
HCURSOR16  LoadCursor16(HINSTANCE16,SEGPTR);
HCURSOR32  LoadCursor32A(HINSTANCE32,LPCSTR);
HCURSOR32  LoadCursor32W(HINSTANCE32,LPCWSTR);
#define    LoadCursor WINELIB_NAME_AW(LoadCursor)
HICON16    LoadIcon16(HINSTANCE16,SEGPTR);
HICON32    LoadIcon32A(HINSTANCE32,LPCSTR);
HICON32    LoadIcon32W(HINSTANCE32,LPCWSTR);
#define    LoadIcon WINELIB_NAME_AW(LoadIcon)
HINSTANCE16 LoadLibrary16(LPCSTR);
HINSTANCE32 LoadLibrary32A(LPCSTR);
HINSTANCE32 LoadLibrary32W(LPCWSTR);
#define    LoadLibrary WINELIB_NAME_AW(LoadLibrary)
HMENU16    LoadMenu16(HINSTANCE16,SEGPTR);
HMENU32    LoadMenu32A(HINSTANCE32,LPCSTR);
HMENU32    LoadMenu32W(HINSTANCE32,LPCWSTR);
#define    LoadMenu WINELIB_NAME_AW(LoadMenu)
HMENU16    LoadMenuIndirect16(LPCVOID);
HMENU32    LoadMenuIndirect32A(LPCVOID);
HMENU32    LoadMenuIndirect32W(LPCVOID);
#define    LoadMenuIndirect WINELIB_NAME_AW(LoadMenuIndirect)
HINSTANCE16 LoadModule16(LPCSTR,LPVOID);
DWORD      LoadModule32(LPCSTR,LPVOID);
#define    LoadModule WINELIB_NAME(LoadModule)
HGLOBAL16  LoadResource16(HINSTANCE16,HRSRC16);
HGLOBAL32  LoadResource32(HINSTANCE32,HRSRC32);
#define    LoadResource WINELIB_NAME(LoadResource)
INT16      LoadString16(HINSTANCE16,UINT16,LPSTR,INT16);
INT32      LoadString32A(HINSTANCE32,UINT32,LPSTR,INT32);
INT32      LoadString32W(HINSTANCE32,UINT32,LPWSTR,INT32);
#define    LoadString WINELIB_NAME_AW(LoadString)
HLOCAL16   LocalAlloc16(UINT16,WORD);
HLOCAL32   LocalAlloc32(UINT32,DWORD);
#define    LocalAlloc WINELIB_NAME(LocalAlloc)
UINT16     LocalCompact16(UINT16);
UINT32     LocalCompact32(UINT32);
#define    LocalCompact WINELIB_NAME(LocalCompact)
UINT16     LocalFlags16(HLOCAL16);
UINT32     LocalFlags32(HLOCAL32);
#define    LocalFlags WINELIB_NAME(LocalFlags)
HLOCAL16   LocalFree16(HLOCAL16);
HLOCAL32   LocalFree32(HLOCAL32);
#define    LocalFree WINELIB_NAME(LocalFree)
HLOCAL16   LocalHandle16(WORD);
HLOCAL32   LocalHandle32(LPCVOID);
#define    LocalHandle WINELIB_NAME(LocalHandle)
SEGPTR     LocalLock16(HLOCAL16);
LPVOID     LocalLock32(HLOCAL32);
#define    LocalLock WINELIB_NAME(LocalLock)
HLOCAL16   LocalReAlloc16(HLOCAL16,WORD,UINT16);
HLOCAL32   LocalReAlloc32(HLOCAL32,DWORD,UINT32);
#define    LocalReAlloc WINELIB_NAME(LocalReAlloc)
UINT16     LocalShrink16(HGLOBAL16,UINT16);
UINT32     LocalShrink32(HGLOBAL32,UINT32);
#define    LocalShrink WINELIB_NAME(LocalShrink)
UINT16     LocalSize16(HLOCAL16);
UINT32     LocalSize32(HLOCAL32);
#define    LocalSize WINELIB_NAME(LocalSize)
BOOL16     LocalUnlock16(HLOCAL16);
BOOL32     LocalUnlock32(HLOCAL32);
#define    LocalUnlock WINELIB_NAME(LocalUnlock)
LPVOID     LockResource16(HGLOBAL16);
LPVOID     LockResource32(HGLOBAL32);
#define    LockResource WINELIB_NAME(LockResource)
HGLOBAL16  LockSegment16(HGLOBAL16);
#define    LockSegment32(handle) GlobalFix32((HANDLE32)(handle))
#define    LockSegment WINELIB_NAME(LockSegment)
BOOL16     LPtoDP16(HDC16,LPPOINT16,INT16);
BOOL32     LPtoDP32(HDC32,LPPOINT32,INT32);
#define    LPtoDP WINELIB_NAME(LPtoDP)
void       LZClose16(HFILE16);
void       LZClose32(HFILE32);
#define    LZClose WINELIB_NAME(LZClose)
LONG       LZCopy16(HFILE16,HFILE16);
LONG       LZCopy32(HFILE32,HFILE32);
#define    LZCopy WINELIB_NAME(LZCopy)
HFILE16    LZInit16(HFILE16);
HFILE32    LZInit32(HFILE32);
#define    LZInit WINELIB_NAME(LZInit)
LONG       LZSeek16(HFILE16,LONG,INT16);
LONG       LZSeek32(HFILE32,LONG,INT32);
#define    LZSeek WINELIB_NAME(LZSeek)
UINT16     MapVirtualKey16(UINT16,UINT16);
UINT32     MapVirtualKey32A(UINT32,UINT32);
UINT32     MapVirtualKey32W(UINT32,UINT32);
#define    MapVirtualKey WINELIB_NAME_AW(MapVirtualKey)
FARPROC16  MakeProcInstance16(FARPROC16,HANDLE16);
#define    MakeProcInstance32(proc,inst) (proc)
#define    MakeProcInstance WINELIB_NAME(MakeProcInstance)
void       MapDialogRect16(HWND16,LPRECT16);
void       MapDialogRect32(HWND32,LPRECT32);
#define    MapDialogRect WINELIB_NAME(MapDialogRect)
void       MapWindowPoints16(HWND16,HWND16,LPPOINT16,UINT16);
void       MapWindowPoints32(HWND32,HWND32,LPPOINT32,UINT32);
#define    MapWindowPoints WINELIB_NAME(MapWindowPoints)
VOID       MessageBeep16(UINT16);
BOOL32     MessageBeep32(UINT32);
#define    MessageBeep WINELIB_NAME(MessageBeep)
INT16      MessageBox16(HWND16,LPCSTR,LPCSTR,UINT16);
INT32      MessageBox32A(HWND32,LPCSTR,LPCSTR,UINT32);
INT32      MessageBox32W(HWND32,LPCWSTR,LPCWSTR,UINT32);
#define    MessageBox WINELIB_NAME_AW(MessageBox)
BOOL16     ModifyMenu16(HMENU16,UINT16,UINT16,UINT16,SEGPTR);
BOOL32     ModifyMenu32A(HMENU32,UINT32,UINT32,UINT32,LPCSTR);
BOOL32     ModifyMenu32W(HMENU32,UINT32,UINT32,UINT32,LPCWSTR);
#define    ModifyMenu WINELIB_NAME_AW(ModifyMenu)
BOOL16     MoveToEx16(HDC16,INT16,INT16,LPPOINT16);
BOOL32     MoveToEx32(HDC32,INT32,INT32,LPPOINT32);
#define    MoveToEx WINELIB_NAME(MoveToEx)
BOOL16     MoveWindow16(HWND16,INT16,INT16,INT16,INT16,BOOL16);
BOOL32     MoveWindow32(HWND32,INT32,INT32,INT32,INT32,BOOL32);
#define    MoveWindow WINELIB_NAME(MoveWindow)
INT16      MulDiv16(INT16,INT16,INT16);
INT32      MulDiv32(INT32,INT32,INT32);
#define    MulDiv WINELIB_NAME(MulDiv)
INT16      OemToAnsi16(LPCSTR,LPSTR);
#define    OemToAnsi32A OemToChar32A
#define    OemToAnsi32W OemToChar32W
#define    OemToAnsi WINELIB_NAME_AW(OemToAnsi)
VOID       OemToAnsiBuff16(LPCSTR,LPSTR,UINT16);
#define    OemToAnsiBuff32A OemToCharBuff32A
#define    OemToAnsiBuff32W OemToCharBuff32W
#define    OemToAnsiBuff WINELIB_NAME_AW(OemToAnsiBuff)
BOOL32     OemToChar32A(LPCSTR,LPSTR);
BOOL32     OemToChar32W(LPCSTR,LPWSTR);
#define    OemToChar WINELIB_NAME_AW(OemToChar)
BOOL32     OemToCharBuff32A(LPCSTR,LPSTR,DWORD);
BOOL32     OemToCharBuff32W(LPCSTR,LPWSTR,DWORD);
#define    OemToCharBuff WINELIB_NAME_AW(OemToCharBuff)
INT16      OffsetClipRgn16(HDC16,INT16,INT16);
INT32      OffsetClipRgn32(HDC32,INT32,INT32);
#define    OffsetClipRgn WINELIB_NAME(OffsetClipRgn)
void       OffsetRect16(LPRECT16,INT16,INT16);
void       OffsetRect32(LPRECT32,INT32,INT32);
#define    OffsetRect WINELIB_NAME(OffsetRect)
INT16      OffsetRgn16(HRGN16,INT16,INT16);
INT32      OffsetRgn32(HRGN32,INT32,INT32);
#define    OffsetRgn WINELIB_NAME(OffsetRgn)
BOOL16     OffsetViewportOrgEx16(HDC16,INT16,INT16,LPPOINT16);
BOOL32     OffsetViewportOrgEx32(HDC32,INT32,INT32,LPPOINT32);
#define    OffsetViewportOrgEx WINELIB_NAME(OffsetViewportOrgEx)
BOOL16     OffsetWindowOrgEx16(HDC16,INT16,INT16,LPPOINT16);
BOOL32     OffsetWindowOrgEx32(HDC32,INT32,INT32,LPPOINT32);
#define    OffsetWindowOrgEx WINELIB_NAME(OffsetWindowOrgEx)
BOOL16     OpenClipboard16(HWND16);
BOOL32     OpenClipboard32(HWND32);
#define    OpenClipboard WINELIB_NAME(OpenClipboard)
HFILE16    OpenFile16(LPCSTR,OFSTRUCT*,UINT16);
HFILE32    OpenFile32(LPCSTR,OFSTRUCT*,UINT32);
#define    OpenFile WINELIB_NAME(OpenFile)
BOOL16     OpenIcon16(HWND16);
BOOL32     OpenIcon32(HWND32);
#define    OpenIcon WINELIB_NAME(OpenIcon)
INT16      OpenSound16(void);
VOID       OpenSound32(void);
#define    OpenSound WINELIB_NAME(OpenSound)
VOID       OutputDebugString16(LPCSTR);
VOID       OutputDebugString32A(LPCSTR);
VOID       OutputDebugString32W(LPCWSTR);
#define    OutputDebugString WINELIB_NAME_AW(OutputDebugString)
BOOL16     PaintRgn16(HDC16,HRGN16);
BOOL32     PaintRgn32(HDC32,HRGN32);
#define    PaintRgn WINELIB_NAME(PaintRgn)
BOOL16     PatBlt16(HDC16,INT16,INT16,INT16,INT16,DWORD);
BOOL32     PatBlt32(HDC32,INT32,INT32,INT32,INT32,DWORD);
#define    PatBlt WINELIB_NAME(PatBlt)
BOOL16     PeekMessage16(LPMSG16,HWND16,UINT16,UINT16,UINT16);
BOOL32     PeekMessage32A(LPMSG32,HWND32,UINT32,UINT32,UINT32);
BOOL32     PeekMessage32W(LPMSG32,HWND32,UINT32,UINT32,UINT32);
#define    PeekMessage WINELIB_NAME_AW(PeekMessage)
BOOL16     Pie16(HDC16,INT16,INT16,INT16,INT16,INT16,INT16,INT16,INT16);
BOOL32     Pie32(HDC32,INT32,INT32,INT32,INT32,INT32,INT32,INT32,INT32);
#define    Pie WINELIB_NAME(Pie)
BOOL16     PlayMetaFile16(HDC16,HMETAFILE16);
BOOL32     PlayMetaFile32(HDC32,HMETAFILE32);
#define    PlayMetaFile WINELIB_NAME(PlayMetaFile)
VOID       PlayMetaFileRecord16(HDC16,LPHANDLETABLE16,LPMETARECORD,UINT16);
BOOL32     PlayMetaFileRecord32(HDC32,LPHANDLETABLE32,LPMETARECORD,UINT32);
#define    PlayMetaFileRecord WINELIB_NAME(PlayMetaFileRecord)
BOOL16     PolyPolygon16(HDC16,LPPOINT16,LPINT16,UINT16);
BOOL32     PolyPolygon32(HDC32,LPPOINT32,LPINT32,UINT32);
#define    PolyPolygon WINELIB_NAME(PolyPolygon)
BOOL16     Polygon16(HDC16,LPPOINT16,INT16);
BOOL32     Polygon32(HDC32,LPPOINT32,INT32);
#define    Polygon WINELIB_NAME(Polygon)
BOOL16     Polyline16(HDC16,LPPOINT16,INT16);
BOOL32     Polyline32(HDC32,LPPOINT32,INT32);
#define    Polyline WINELIB_NAME(Polyline)
BOOL16     PostAppMessage16(HTASK16,UINT16,WPARAM16,LPARAM);
#define    PostAppMessage32A(thread,msg,wparam,lparam) \
           PostThreadMessage32A((DWORD)(thread),msg,wparam,lparam)
#define    PostAppMessage32W(thread,msg,wparam,lparam) \
           PostThreadMessage32W((DWORD)(thread),msg,wparam,lparam)
#define    PostAppMessage WINELIB_NAME_AW(PostAppMessage)
BOOL16     PostMessage16(HWND16,UINT16,WPARAM16,LPARAM);
BOOL32     PostMessage32A(HWND32,UINT32,WPARAM32,LPARAM);
BOOL32     PostMessage32W(HWND32,UINT32,WPARAM32,LPARAM);
#define    PostMessage WINELIB_NAME_AW(PostMessage)
void       PostQuitMessage16(INT16);
void       PostQuitMessage32(INT32);
#define    PostQuitMessage WINELIB_NAME(PostQuitMessage)
BOOL16     PtInRect16(const RECT16*,POINT16);
BOOL32     PtInRect32(const RECT32*,POINT32);
#define    PtInRect WINELIB_NAME(PtInRect)
BOOL16     PtInRegion16(HRGN16,INT16,INT16);
BOOL32     PtInRegion32(HRGN32,INT32,INT32);
#define    PtInRegion WINELIB_NAME(PtInRegion)
BOOL16     PtVisible16(HDC16,INT16,INT16);
BOOL32     PtVisible32(HDC32,INT32,INT32);
#define    PtVisible WINELIB_NAME(PtVisible)
UINT16     RealizePalette16(HDC16);
UINT32     RealizePalette32(HDC32);
#define    RealizePalette WINELIB_NAME(RealizePalette)
BOOL16     Rectangle16(HDC16,INT16,INT16,INT16,INT16);
BOOL32     Rectangle32(HDC32,INT32,INT32,INT32,INT32);
#define    Rectangle WINELIB_NAME(Rectangle)
BOOL16     RectInRegion16(HRGN16,const RECT16 *);
BOOL32     RectInRegion32(HRGN32,const RECT32 *);
#define    RectInRegion WINELIB_NAME(RectInRegion)
BOOL16     RectVisible16(HDC16,LPRECT16);
BOOL32     RectVisible32(HDC32,LPRECT32);
#define    RectVisible WINELIB_NAME(RectVisible)
BOOL16     RedrawWindow16(HWND16,const RECT16*,HRGN16,UINT16);
BOOL32     RedrawWindow32(HWND32,const RECT32*,HRGN32,UINT32);
#define    RedrawWindow WINELIB_NAME(RedrawWindow)
DWORD      RegCreateKey16(HKEY,LPCSTR,LPHKEY);
DWORD      RegCreateKey32A(HKEY,LPCSTR,LPHKEY);
DWORD      RegCreateKey32W(HKEY,LPCWSTR,LPHKEY);
#define    RegCreateKey WINELIB_NAME_AW(RegCreateKey)
DWORD      RegDeleteKey16(HKEY,LPCSTR);
DWORD      RegDeleteKey32A(HKEY,LPCSTR);
DWORD      RegDeleteKey32W(HKEY,LPWSTR);
#define    RegDeleteKey WINELIB_NAME_AW(RegDeleteKey)
DWORD      RegDeleteValue16(HKEY,LPSTR);
DWORD      RegDeleteValue32A(HKEY,LPSTR);
DWORD      RegDeleteValue32W(HKEY,LPWSTR);
#define    RegDeleteValue WINELIB_NAME_AW(RegDeleteValue)
DWORD      RegEnumKey16(HKEY,DWORD,LPSTR,DWORD);
DWORD      RegEnumKey32A(HKEY,DWORD,LPSTR,DWORD);
DWORD      RegEnumKey32W(HKEY,DWORD,LPWSTR,DWORD);
#define    RegEnumKey WINELIB_NAME_AW(RegEnumKey)
DWORD      RegEnumValue16(HKEY,DWORD,LPSTR,LPDWORD,LPDWORD,LPDWORD,LPBYTE,LPDWORD);
DWORD      RegEnumValue32A(HKEY,DWORD,LPSTR,LPDWORD,LPDWORD,LPDWORD,LPBYTE,LPDWORD);
DWORD      RegEnumValue32W(HKEY,DWORD,LPWSTR,LPDWORD,LPDWORD,LPDWORD,LPBYTE,LPDWORD);
#define    RegEnumValue WINELIB_NAME_AW(RegEnumValue)
ATOM       RegisterClass16(const WNDCLASS16*);
ATOM       RegisterClass32A(const WNDCLASS32A *);
ATOM       RegisterClass32W(const WNDCLASS32W *);
#define    RegisterClass WINELIB_NAME_AW(RegisterClass)
ATOM       RegisterClassEx16(const WNDCLASSEX16*);
ATOM       RegisterClassEx32A(const WNDCLASSEX32A *);
ATOM       RegisterClassEx32W(const WNDCLASSEX32W *);
#define    RegisterClassEx WINELIB_NAME_AW(RegisterClassEx)
UINT16     RegisterClipboardFormat16(LPCSTR);
UINT32     RegisterClipboardFormat32A(LPCSTR);
UINT32     RegisterClipboardFormat32W(LPCWSTR);
#define    RegisterClipboardFormat WINELIB_NAME_AW(RegisterClipboardFormat)
WORD       RegisterWindowMessage16(SEGPTR);
WORD       RegisterWindowMessage32A(LPCSTR);
WORD       RegisterWindowMessage32W(LPCWSTR);
#define    RegisterWindowMessage WINELIB_NAME_AW(RegisterWindowMessage)
DWORD      RegOpenKey16(HKEY,LPCSTR,LPHKEY);
DWORD      RegOpenKey32A(HKEY,LPCSTR,LPHKEY);
DWORD      RegOpenKey32W(HKEY,LPCWSTR,LPHKEY);
#define    RegOpenKey WINELIB_NAME_AW(RegOpenKey)
DWORD      RegQueryValue16(HKEY,LPSTR,LPSTR,LPDWORD);
DWORD      RegQueryValue32A(HKEY,LPSTR,LPSTR,LPDWORD);
DWORD      RegQueryValue32W(HKEY,LPWSTR,LPWSTR,LPDWORD);
#define    RegQueryValue WINELIB_NAME_AW(RegQueryValue)
DWORD      RegQueryValueEx16(HKEY,LPSTR,LPDWORD,LPDWORD,LPBYTE,LPDWORD);
DWORD      RegQueryValueEx32A(HKEY,LPSTR,LPDWORD,LPDWORD,LPBYTE,LPDWORD);
DWORD      RegQueryValueEx32W(HKEY,LPWSTR,LPDWORD,LPDWORD,LPBYTE,LPDWORD);
#define    RegQueryValueEx WINELIB_NAME_AW(RegQueryValueEx)
DWORD      RegSetValue16(HKEY,LPCSTR,DWORD,LPCSTR,DWORD);
DWORD      RegSetValue32A(HKEY,LPCSTR,DWORD,LPCSTR,DWORD);
DWORD      RegSetValue32W(HKEY,LPCWSTR,DWORD,LPCWSTR,DWORD);
#define    RegSetValue WINELIB_NAME_AW(RegSetValue)
DWORD      RegSetValueEx16(HKEY,LPSTR,DWORD,DWORD,LPBYTE,DWORD);
DWORD      RegSetValueEx32A(HKEY,LPSTR,DWORD,DWORD,LPBYTE,DWORD);
DWORD      RegSetValueEx32W(HKEY,LPWSTR,DWORD,DWORD,LPBYTE,DWORD);
#define    RegSetValueEx WINELIB_NAME_AW(RegSetValueEx)
INT16      ReleaseDC16(HWND16,HDC16);
INT32      ReleaseDC32(HWND32,HDC32);
#define    ReleaseDC WINELIB_NAME(ReleaseDC)
BOOL16     RemoveDirectory16(LPCSTR);
BOOL32     RemoveDirectory32A(LPCSTR);
BOOL32     RemoveDirectory32W(LPCWSTR);
#define    RemoveDirectory WINELIB_NAME_AW(RemoveDirectory)
BOOL16     RemoveFontResource16(LPCSTR);
BOOL32     RemoveFontResource32A(LPCSTR);
BOOL32     RemoveFontResource32W(LPCWSTR);
#define    RemoveFontResource WINELIB_NAME_AW(RemoveFontResource)
BOOL16     RemoveMenu16(HMENU16,UINT16,UINT16);
BOOL32     RemoveMenu32(HMENU32,UINT32,UINT32);
#define    RemoveMenu WINELIB_NAME(RemoveMenu)
HANDLE16   RemoveProp16(HWND16,LPCSTR);
HANDLE32   RemoveProp32A(HWND32,LPCSTR);
HANDLE32   RemoveProp32W(HWND32,LPCWSTR);
#define    RemoveProp WINELIB_NAME_AW(RemoveProp)
VOID       ReplyMessage16(LRESULT);
BOOL32     ReplyMessage32(LRESULT);
#define    ReplyMessage WINELIB_NAME(ReplyMessage)
HDC16      ResetDC16(HDC16,const DEVMODE16 *);
HDC32      ResetDC32A(HDC32,const DEVMODE32A *);
HDC32      ResetDC32W(HDC32,const DEVMODE32W *);
#define    ResetDC WINELIB_NAME_AW(ResetDC)
BOOL16     ResizePalette16(HPALETTE16,UINT16);
BOOL32     ResizePalette32(HPALETTE32,UINT32);
#define    ResizePalette WINELIB_NAME(ResizePalette)
BOOL16     RestoreDC16(HDC16,INT16);
BOOL32     RestoreDC32(HDC32,INT32);
#define    RestoreDC WINELIB_NAME(RestoreDC)
BOOL16     RoundRect16(HDC16,INT16,INT16,INT16,INT16,INT16,INT16);
BOOL32     RoundRect32(HDC32,INT32,INT32,INT32,INT32,INT32,INT32);
#define    RoundRect WINELIB_NAME(RoundRect)
INT16      SaveDC16(HDC16);
INT32      SaveDC32(HDC32);
#define    SaveDC WINELIB_NAME(SaveDC)
BOOL16     ScaleViewportExtEx16(HDC16,INT16,INT16,INT16,INT16,LPSIZE16);
BOOL32     ScaleViewportExtEx32(HDC32,INT32,INT32,INT32,INT32,LPSIZE32);
#define    ScaleViewportExtEx WINELIB_NAME(ScaleViewportExtEx)
BOOL16     ScaleWindowExtEx16(HDC16,INT16,INT16,INT16,INT16,LPSIZE16);
BOOL32     ScaleWindowExtEx32(HDC32,INT32,INT32,INT32,INT32,LPSIZE32);
#define    ScaleWindowExtEx WINELIB_NAME(ScaleWindowExtEx)
void       ScreenToClient16(HWND16,LPPOINT16);
void       ScreenToClient32(HWND32,LPPOINT32);
#define    ScreenToClient WINELIB_NAME(ScreenToClient)
VOID       ScrollChildren16(HWND16,UINT16,WPARAM16,LPARAM);
VOID       ScrollChildren32(HWND32,UINT32,WPARAM32,LPARAM);
#define    ScrollChildren WINELIB_NAME(ScrollChildren)
BOOL16     ScrollDC16(HDC16,INT16,INT16,const RECT16*,const RECT16*,
                      HRGN16,LPRECT16);
BOOL32     ScrollDC32(HDC32,INT32,INT32,const RECT32*,const RECT32*,
                      HRGN32,LPRECT32);
#define    ScrollDC WINELIB_NAME(ScrollDC)
void       ScrollWindow16(HWND16,INT16,INT16,const RECT16*,const RECT16*);
BOOL32     ScrollWindow32(HWND32,INT32,INT32,const RECT32*,const RECT32*);
#define    ScrollWindow WINELIB_NAME(ScrollWindow)
INT16      ScrollWindowEx16(HWND16,INT16,INT16,const RECT16*,const RECT16*,
                            HRGN16,LPRECT16,UINT16);
INT32      ScrollWindowEx32(HWND32,INT32,INT32,const RECT32*,const RECT32*,
                            HRGN32,LPRECT32,UINT32);
#define    ScrollWindowEx WINELIB_NAME(ScrollWindowEx)
INT16      SelectClipRgn16(HDC16,HRGN16);
INT32      SelectClipRgn32(HDC32,HRGN32);
#define    SelectClipRgn WINELIB_NAME(SelectClipRgn)
HGDIOBJ16  SelectObject16(HDC16,HGDIOBJ16);
HGDIOBJ32  SelectObject32(HDC32,HGDIOBJ32);
#define    SelectObject WINELIB_NAME(SelectObject)
HPALETTE16 SelectPalette16(HDC16,HPALETTE16,BOOL16);
HPALETTE32 SelectPalette32(HDC32,HPALETTE32,BOOL32);
#define    SelectPalette WINELIB_NAME(SelectPalette)
LRESULT    SendDlgItemMessage16(HWND16,INT16,UINT16,WPARAM16,LPARAM);
LRESULT    SendDlgItemMessage32A(HWND32,INT32,UINT32,WPARAM32,LPARAM);
LRESULT    SendDlgItemMessage32W(HWND32,INT32,UINT32,WPARAM32,LPARAM);
#define    SendDlgItemMessage WINELIB_NAME_AW(SendDlgItemMessage)
LRESULT    SendMessage16(HWND16,UINT16,WPARAM16,LPARAM);
LRESULT    SendMessage32A(HWND32,UINT32,WPARAM32,LPARAM);
LRESULT    SendMessage32W(HWND32,UINT32,WPARAM32,LPARAM);
#define    SendMessage WINELIB_NAME_AW(SendMessage)
HWND16     SetActiveWindow16(HWND16);
HWND32     SetActiveWindow32(HWND32);
#define    SetActiveWindow WINELIB_NAME(SetActiveWindow)
LONG       SetBitmapBits16(HBITMAP16,LONG,LPCVOID);
LONG       SetBitmapBits32(HBITMAP32,LONG,LPCVOID);
#define    SetBitmapBits WINELIB_NAME(SetBitmapBits)
BOOL16     SetBitmapDimensionEx16(HBITMAP16,INT16,INT16,LPSIZE16);
BOOL32     SetBitmapDimensionEx32(HBITMAP32,INT32,INT32,LPSIZE32);
#define    SetBitmapDimensionEx WINELIB_NAME(SetBitmapDimensionEx)
COLORREF   SetBkColor16(HDC16,COLORREF);
COLORREF   SetBkColor32(HDC32,COLORREF);
#define    SetBkColor WINELIB_NAME(SetBkColor)
INT16      SetBkMode16(HDC16,INT16);
INT32      SetBkMode32(HDC32,INT32);
#define    SetBkMode WINELIB_NAME(SetBkMode)
HWND16     SetCapture16(HWND16);
HWND32     SetCapture32(HWND32);
#define    SetCapture WINELIB_NAME(SetCapture)
VOID       SetCaretBlinkTime16(UINT16);
BOOL32     SetCaretBlinkTime32(UINT32);
#define    SetCaretBlinkTime WINELIB_NAME(SetCaretBlinkTime)
VOID       SetCaretPos16(INT16,INT16);
BOOL32     SetCaretPos32(INT32,INT32);
#define    SetCaretPos WINELIB_NAME(SetCaretPos)
LONG       SetClassLong16(HWND16,INT16,LONG);
LONG       SetClassLong32A(HWND32,INT32,LONG);
LONG       SetClassLong32W(HWND32,INT32,LONG);
#define    SetClassLong WINELIB_NAME_AW(SetClassLong)
WORD       SetClassWord16(HWND16,INT16,WORD);
WORD       SetClassWord32(HWND32,INT32,WORD);
#define    SetClassWord WINELIB_NAME(SetClassWord)
HANDLE16   SetClipboardData16(UINT16,HANDLE16);
HANDLE32   SetClipboardData32(UINT32,HANDLE32);
#define    SetClipboardData WINELIB_NAME(SetClipboardData)
HWND16     SetClipboardViewer16(HWND16);
HWND32     SetClipboardViewer32(HWND32);
#define    SetClipboardViewer WINELIB_NAME(SetClipboardViewer)
INT16      SetCommBreak16(INT16);
BOOL32     SetCommBreak32(INT32);
#define    SetCommBreak WINELIB_NAME(SetCommBreak)
INT16      SetCommState16(LPDCB16);
BOOL32     SetCommState32(INT32,LPDCB32);
#define    SetCommState WINELIB_NAME(SetCommState)
BOOL16     SetCurrentDirectory16(LPCSTR);
BOOL32     SetCurrentDirectory32A(LPCSTR);
BOOL32     SetCurrentDirectory32W(LPCWSTR);
#define    SetCurrentDirectory WINELIB_NAME_AW(SetCurrentDirectory)
HCURSOR16  SetCursor16(HCURSOR16);
HCURSOR32  SetCursor32(HCURSOR32);
#define    SetCursor WINELIB_NAME(SetCursor)
void       SetCursorPos16(INT16,INT16);
BOOL32     SetCursorPos32(INT32,INT32);
#define    SetCursorPos WINELIB_NAME(SetCursorPos)
BOOL16     SetDeskWallPaper16(LPCSTR);
BOOL32     SetDeskWallPaper32(LPCSTR);
#define    SetDeskWallPaper WINELIB_NAME(SetDeskWallPaper)
INT16      SetDIBits16(HDC16,HBITMAP16,UINT16,UINT16,LPCVOID,const BITMAPINFO*,UINT16);
INT32      SetDIBits32(HDC32,HBITMAP32,UINT32,UINT32,LPCVOID,const BITMAPINFO*,UINT32);
#define    SetDIBits WINELIB_NAME(SetDIBits)
INT16      SetDIBitsToDevice16(HDC16,INT16,INT16,INT16,INT16,INT16,INT16,
                               UINT16,UINT16,LPCVOID,const BITMAPINFO*,UINT16);
INT32      SetDIBitsToDevice32(HDC32,INT32,INT32,DWORD,DWORD,INT32,INT32,
                               UINT32,UINT32,LPCVOID,const BITMAPINFO*,UINT32);
#define    SetDIBitsToDevice WINELIB_NAME(SetDIBitsToDevice)
void       SetDlgItemInt16(HWND16,INT16,UINT16,BOOL16);
void       SetDlgItemInt32(HWND32,INT32,UINT32,BOOL32);
#define    SetDlgItemInt WINELIB_NAME(SetDlgItemInt)
void       SetDlgItemText16(HWND16,INT16,SEGPTR);
void       SetDlgItemText32A(HWND32,INT32,LPCSTR);
void       SetDlgItemText32W(HWND32,INT32,LPCWSTR);
#define    SetDlgItemText WINELIB_NAME_AW(SetDlgItemText)
VOID       SetDoubleClickTime16(UINT16);
BOOL32     SetDoubleClickTime32(UINT32);
#define    SetDoubleClickTime WINELIB_NAME(SetDoubleClickTime)
UINT16     SetErrorMode16(UINT16);
UINT32     SetErrorMode32(UINT32);
#define    SetErrorMode WINELIB_NAME(SetErrorMode)
BOOL16     SetFileAttributes16(LPCSTR,DWORD);
BOOL32     SetFileAttributes32A(LPCSTR,DWORD);
BOOL32     SetFileAttributes32W(LPCWSTR,DWORD);
#define    SetFileAttributes WINELIB_NAME_AW(SetFileAttributes)
HWND16     SetFocus16(HWND16);
HWND32     SetFocus32(HWND32);
#define    SetFocus WINELIB_NAME(SetFocus)
UINT16     SetHandleCount16(UINT16);
UINT32     SetHandleCount32(UINT32);
#define    SetHandleCount WINELIB_NAME(SetHandleCount)
void       SetInternalWindowPos16(HWND16,UINT16,LPRECT16,LPPOINT16);
void       SetInternalWindowPos32(HWND32,UINT32,LPRECT32,LPPOINT32);
#define    SetInternalWindowPos WINELIB_NAME(SetInternalWindowPos)
INT16      SetMapMode16(HDC16,INT16);
INT32      SetMapMode32(HDC32,INT32);
#define    SetMapMode WINELIB_NAME(SetMapMode)
DWORD      SetMapperFlags16(HDC16,DWORD);
DWORD      SetMapperFlags32(HDC32,DWORD);
#define    SetMapperFlags WINELIB_NAME(SetMapperFlags)
BOOL16     SetMenu16(HWND16,HMENU16);
BOOL32     SetMenu32(HWND32,HMENU32);
#define    SetMenu WINELIB_NAME(SetMenu)
BOOL16     SetMenuItemBitmaps16(HMENU16,UINT16,UINT16,HBITMAP16,HBITMAP16);
BOOL32     SetMenuItemBitmaps32(HMENU32,UINT32,UINT32,HBITMAP32,HBITMAP32);
#define    SetMenuItemBitmaps WINELIB_NAME(SetMenuItemBitmaps)
BOOL16     SetMessageQueue16(INT16);
BOOL32     SetMessageQueue32(INT32);
#define    SetMessageQueue WINELIB_NAME(SetMessageQueue)
UINT16     SetPaletteEntries16(HPALETTE16,UINT16,UINT16,LPPALETTEENTRY);
UINT32     SetPaletteEntries32(HPALETTE32,UINT32,UINT32,LPPALETTEENTRY);
#define    SetPaletteEntries WINELIB_NAME(SetPaletteEntries)
HWND16     SetParent16(HWND16,HWND16);
HWND32     SetParent32(HWND32,HWND32);
#define    SetParent WINELIB_NAME(SetParent)
COLORREF   SetPixel16(HDC16,INT16,INT16,COLORREF);
COLORREF   SetPixel32(HDC32,INT32,INT32,COLORREF);
#define    SetPixel WINELIB_NAME(SetPixel)
INT16      SetPolyFillMode16(HDC16,INT16);
INT32      SetPolyFillMode32(HDC32,INT32);
#define    SetPolyFillMode WINELIB_NAME(SetPolyFillMode)
BOOL16     SetProp16(HWND16,LPCSTR,HANDLE16);
BOOL32     SetProp32A(HWND32,LPCSTR,HANDLE32);
BOOL32     SetProp32W(HWND32,LPCWSTR,HANDLE32);
#define    SetProp WINELIB_NAME_AW(SetProp)
void       SetRect16(LPRECT16,INT16,INT16,INT16,INT16);
void       SetRect32(LPRECT32,INT32,INT32,INT32,INT32);
#define    SetRect WINELIB_NAME(SetRect)
void       SetRectEmpty16(LPRECT16);
void       SetRectEmpty32(LPRECT32);
#define    SetRectEmpty WINELIB_NAME(SetRectEmpty)
VOID       SetRectRgn16(HRGN16,INT16,INT16,INT16,INT16);
VOID       SetRectRgn32(HRGN32,INT32,INT32,INT32,INT32);
#define    SetRectRgn WINELIB_NAME(SetRectRgn)
INT16      SetRelAbs16(HDC16,INT16);
INT32      SetRelAbs32(HDC32,INT32);
#define    SetRelAbs WINELIB_NAME(SetRelAbs)
INT16      SetROP216(HDC16,INT16);
INT32      SetROP232(HDC32,INT32);
#define    SetROP2 WINELIB_NAME(SetROP2)
INT16      SetScrollInfo16(HWND16,INT16,const SCROLLINFO*,BOOL16);
INT32      SetScrollInfo32(HWND32,INT32,const SCROLLINFO*,BOOL32);
#define    SetScrollInfo WINELIB_NAME(SetScrollInfo)
INT16      SetScrollPos16(HWND16,INT16,INT16,BOOL16);
INT32      SetScrollPos32(HWND32,INT32,INT32,BOOL32);
#define    SetScrollPos WINELIB_NAME(SetScrollPos)
void       SetScrollRange16(HWND16,INT16,INT16,INT16,BOOL16);
BOOL32     SetScrollRange32(HWND32,INT32,INT32,INT32,BOOL32);
#define    SetScrollRange WINELIB_NAME(SetScrollRange)
INT16      SetSoundNoise16(INT16,INT16);
DWORD      SetSoundNoise32(DWORD,DWORD);
#define    SetSoundNoise WINELIB_NAME(SetSoundNoise)
INT16      SetStretchBltMode16(HDC16,INT16);
INT32      SetStretchBltMode32(HDC32,INT32);
#define    SetStretchBltMode WINELIB_NAME(SetStretchBltMode)
VOID       SetSysColors16(INT16,const INT16*,const COLORREF*);
BOOL32     SetSysColors32(INT32,const INT32*,const COLORREF*);
#define    SetSysColors WINELIB_NAME(SetSysColors)
HWND16     SetSysModalWindow16(HWND16);
#define    SetSysModalWindow32(hwnd) ((HWND32)0)
#define    SetSysModalWindow WINELIB_NAME(SetSysModalWindow)
BOOL16     SetSystemMenu16(HWND16,HMENU16);
BOOL32     SetSystemMenu32(HWND32,HMENU32);
#define    SetSystemMenu WINELIB_NAME(SetSystemMenu)
UINT16     SetSystemPaletteUse16(HDC16,UINT16);
UINT32     SetSystemPaletteUse32(HDC32,UINT32);
#define    SetSystemPaletteUse WINELIB_NAME(SetSystemPaletteUse)
UINT16     SetSystemTimer16(HWND16,UINT16,UINT16,TIMERPROC16);
UINT32     SetSystemTimer32(HWND32,UINT32,UINT32,TIMERPROC32);
#define    SetSystemTimer WINELIB_NAME(SetSystemTimer)
UINT16     SetTextAlign16(HDC16,UINT16);
UINT32     SetTextAlign32(HDC32,UINT32);
#define    SetTextAlign WINELIB_NAME(SetTextAlign)
INT16      SetTextCharacterExtra16(HDC16,INT16);
INT32      SetTextCharacterExtra32(HDC32,INT32);
#define    SetTextCharacterExtra WINELIB_NAME(SetTextCharacterExtra)
COLORREF   SetTextColor16(HDC16,COLORREF);
COLORREF   SetTextColor32(HDC32,COLORREF);
#define    SetTextColor WINELIB_NAME(SetTextColor)
INT16      SetTextJustification16(HDC16,INT16,INT16);
BOOL32     SetTextJustification32(HDC32,INT32,INT32);
#define    SetTextJustification WINELIB_NAME(SetTextJustification)
UINT16     SetTimer16(HWND16,UINT16,UINT16,TIMERPROC16);
UINT32     SetTimer32(HWND32,UINT32,UINT32,TIMERPROC32);
#define    SetTimer WINELIB_NAME(SetTimer)
BOOL16     SetViewportExtEx16(HDC16,INT16,INT16,LPSIZE16);
BOOL32     SetViewportExtEx32(HDC32,INT32,INT32,LPSIZE32);
#define    SetViewportExtEx WINELIB_NAME(SetViewportExtEx)
BOOL16     SetViewportOrgEx16(HDC16,INT16,INT16,LPPOINT16);
BOOL32     SetViewportOrgEx32(HDC32,INT32,INT32,LPPOINT32);
#define    SetViewportOrgEx WINELIB_NAME(SetViewportOrgEx)
INT16      SetVoiceAccent16(INT16,INT16,INT16,INT16,INT16);
DWORD      SetVoiceAccent32(DWORD,DWORD,DWORD,DWORD,DWORD);
#define    SetVoiceAccent WINELIB_NAME(SetVoiceAccent)
INT16      SetVoiceEnvelope16(INT16,INT16,INT16);
DWORD      SetVoiceEnvelope32(DWORD,DWORD,DWORD);
#define    SetVoiceEnvelope WINELIB_NAME(SetVoiceEnvelope)
INT16      SetVoiceNote16(INT16,INT16,INT16,INT16);
DWORD      SetVoiceNote32(DWORD,DWORD,DWORD,DWORD);
#define    SetVoiceNote WINELIB_NAME(SetVoiceNote)
INT16      SetVoiceQueueSize16(INT16,INT16);
DWORD      SetVoiceQueueSize32(DWORD,DWORD);
#define    SetVoiceQueueSize WINELIB_NAME(SetVoiceQueueSize)
INT16      SetVoiceSound16(INT16,DWORD,INT16);
DWORD      SetVoiceSound32(DWORD,DWORD,DWORD);
#define    SetVoiceSound WINELIB_NAME(SetVoiceSound)
INT16      SetVoiceThreshold16(INT16,INT16);
DWORD      SetVoiceThreshold32(DWORD,DWORD);
#define    SetVoiceThreshold WINELIB_NAME(SetVoiceThreshold)
BOOL16     SetWindowExtEx16(HDC16,INT16,INT16,LPSIZE16);
BOOL32     SetWindowExtEx32(HDC32,INT32,INT32,LPSIZE32);
#define    SetWindowExtEx WINELIB_NAME(SetWindowExtEx)
LONG       SetWindowLong16(HWND16,INT16,LONG);
LONG       SetWindowLong32A(HWND32,INT32,LONG);
LONG       SetWindowLong32W(HWND32,INT32,LONG);
#define    SetWindowLong WINELIB_NAME_AW(SetWindowLong)
BOOL16     SetWindowOrgEx16(HDC16,INT16,INT16,LPPOINT16);
BOOL32     SetWindowOrgEx32(HDC32,INT32,INT32,LPPOINT32);
#define    SetWindowOrgEx WINELIB_NAME(SetWindowOrgEx)
BOOL16     SetWindowPlacement16(HWND16,const WINDOWPLACEMENT16*);
BOOL32     SetWindowPlacement32(HWND32,const WINDOWPLACEMENT32*);
#define    SetWindowPlacement WINELIB_NAME(SetWindowPlacement)
FARPROC16  SetWindowsHook16(INT16,HOOKPROC16);
HHOOK      SetWindowsHook32A(INT32,HOOKPROC32);
HHOOK      SetWindowsHook32W(INT32,HOOKPROC32);
#define    SetWindowsHook WINELIB_NAME_AW(SetWindowsHook)
HHOOK      SetWindowsHookEx16(INT16,HOOKPROC16,HINSTANCE16,HTASK16);
HHOOK      SetWindowsHookEx32A(INT32,HOOKPROC32,HINSTANCE32,DWORD);
HHOOK      SetWindowsHookEx32W(INT32,HOOKPROC32,HINSTANCE32,DWORD);
#define    SetWindowsHookEx WINELIB_NAME_AW(SetWindowsHookEx)
BOOL16     SetWindowPos16(HWND16,HWND16,INT16,INT16,INT16,INT16,WORD);
BOOL32     SetWindowPos32(HWND32,HWND32,INT32,INT32,INT32,INT32,WORD);
#define    SetWindowPos WINELIB_NAME(SetWindowPos)
void       SetWindowText16(HWND16,SEGPTR);
void       SetWindowText32A(HWND32,LPCSTR);
void       SetWindowText32W(HWND32,LPCWSTR);
#define    SetWindowText WINELIB_NAME_AW(SetWindowText)
WORD       SetWindowWord16(HWND16,INT16,WORD);
WORD       SetWindowWord32(HWND32,INT32,WORD);
#define    SetWindowWord WINELIB_NAME(SetWindowWord)
BOOL16     ShellAbout16(HWND16,LPCSTR,LPCSTR,HICON16);
BOOL32     ShellAbout32A(HWND32,LPCSTR,LPCSTR,HICON32);
BOOL32     ShellAbout32W(HWND32,LPCWSTR,LPCWSTR,HICON32);
#define    ShellAbout WINELIB_NAME_AW(ShellAbout)
HINSTANCE16 ShellExecute16(HWND16,LPCSTR,LPCSTR,LPCSTR,LPCSTR,INT16);
HINSTANCE32 ShellExecute32A(HWND32,LPCSTR,LPCSTR,LPCSTR,LPCSTR,INT32);
HINSTANCE32 ShellExecute32W(HWND32,LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR,INT32);
#define    ShellExecute WINELIB_NAME_AW(ShellExecute)
VOID       ShowCaret16(HWND16);
BOOL32     ShowCaret32(HWND32);
#define    ShowCaret WINELIB_NAME(ShowCaret)
INT16      ShowCursor16(BOOL16);
INT32      ShowCursor32(BOOL32);
#define    ShowCursor WINELIB_NAME(ShowCursor)
void       ShowScrollBar16(HWND16,INT16,BOOL16);
BOOL32     ShowScrollBar32(HWND32,INT32,BOOL32);
#define    ShowScrollBar WINELIB_NAME(ShowScrollBar)
VOID       ShowOwnedPopups16(HWND16,BOOL16);
BOOL32     ShowOwnedPopups32(HWND32,BOOL32);
#define    ShowOwnedPopups WINELIB_NAME(ShowOwnedPopups)
BOOL16     ShowWindow16(HWND16,INT16);
BOOL32     ShowWindow32(HWND32,INT32);
#define    ShowWindow WINELIB_NAME(ShowWindow)
DWORD      SizeofResource16(HMODULE16,HRSRC16);
DWORD      SizeofResource32(HMODULE32,HRSRC32);
#define    SizeofResource WINELIB_NAME(SizeofResource)
INT16      StartSound16(void);
VOID       StartSound32(void);
#define    StartSound WINELIB_NAME(StartSound)
INT16      StopSound16(void);
VOID       StopSound32(void);
#define    StopSound WINELIB_NAME(StopSound)
BOOL16     StretchBlt16(HDC16,INT16,INT16,INT16,INT16,HDC16,INT16,INT16,
                        INT16,INT16,DWORD);
BOOL32     StretchBlt32(HDC32,INT32,INT32,INT32,INT32,HDC32,INT32,INT32,
                        INT32,INT32,DWORD);
#define    StretchBlt WINELIB_NAME(StretchBlt)
INT16      StretchDIBits16(HDC16,INT16,INT16,INT16,INT16,INT16,INT16,INT16,
                           INT16,const VOID*,const BITMAPINFO*,UINT16,DWORD);
INT32      StretchDIBits32(HDC32,INT32,INT32,INT32,INT32,INT32,INT32,INT32,
                           INT32,const VOID*,const BITMAPINFO*,UINT32,DWORD);
#define    StretchDIBits WINELIB_NAME(StretchDIBits)
BOOL16     SubtractRect16(LPRECT16,const RECT16*,const RECT16*);
BOOL32     SubtractRect32(LPRECT32,const RECT32*,const RECT32*);
#define    SubtractRect WINELIB_NAME(SubtractRect)
BOOL16     SwapMouseButton16(BOOL16);
BOOL32     SwapMouseButton32(BOOL32);
#define    SwapMouseButton WINELIB_NAME(SwapMouseButton)
INT16      SyncAllVoices16(void);
DWORD      SyncAllVoices32(void);
#define    SyncAllVoices WINELIB_NAME(SyncAllVoices)
BOOL16     SystemParametersInfo16(UINT16,UINT16,LPVOID,UINT16);
BOOL32     SystemParametersInfo32A(UINT32,UINT32,LPVOID,UINT32);
BOOL32     SystemParametersInfo32W(UINT32,UINT32,LPVOID,UINT32);
#define    SystemParametersInfo WINELIB_NAME_AW(SystemParametersInfo)
LONG       TabbedTextOut16(HDC16,INT16,INT16,LPCSTR,INT16,INT16,const INT16*,INT16);
LONG       TabbedTextOut32A(HDC32,INT32,INT32,LPCSTR,INT32,INT32,const INT32*,INT32);
LONG       TabbedTextOut32W(HDC32,INT32,INT32,LPCWSTR,INT32,INT32,const INT32*,INT32);
#define    TabbedTextOut WINELIB_NAME_AW(TabbedTextOut)
BOOL16     TextOut16(HDC16,INT16,INT16,LPCSTR,INT16);
BOOL32     TextOut32A(HDC32,INT32,INT32,LPCSTR,INT32);
BOOL32     TextOut32W(HDC32,INT32,INT32,LPCWSTR,INT32);
#define    TextOut WINELIB_NAME_AW(TextOut)
INT16      ToAscii16(UINT16,UINT16,LPBYTE,LPVOID,UINT16);
INT32      ToAscii32(UINT32,UINT32,LPBYTE,LPWORD,UINT32);
#define    ToAscii WINELIB_NAME(ToAscii)
BOOL16     TrackPopupMenu16(HMENU16,UINT16,INT16,INT16,INT16,HWND16,const RECT16*);
BOOL32     TrackPopupMenu32(HMENU32,UINT32,INT32,INT32,INT32,HWND32,const RECT32*);
#define    TrackPopupMenu WINELIB_NAME(TrackPopupMenu)
INT16      TranslateAccelerator16(HWND16,HACCEL16,LPMSG16);
INT32      TranslateAccelerator32(HWND32,HACCEL32,LPMSG32);
#define    TranslateAccelerator WINELIB_NAME(TranslateAccelerator)
BOOL16     TranslateMDISysAccel16(HWND16,LPMSG16);
BOOL32     TranslateMDISysAccel32(HWND32,LPMSG32);
#define    TranslateMDISysAccel WINELIB_NAME(TranslateMDISysAccel)
BOOL16     TranslateMessage16(const MSG16*);
BOOL32     TranslateMessage32(const MSG32*);
#define    TranslateMessage WINELIB_NAME(TranslateMessage)
INT16      TransmitCommChar16(INT16,CHAR);
BOOL32     TransmitCommChar32(INT32,CHAR);
#define    TransmitCommChar WINELIB_NAME(TransmitCommChar)
BOOL16     UnhookWindowsHook16(INT16,HOOKPROC16);
BOOL32     UnhookWindowsHook32(INT32,HOOKPROC32);
#define    UnhookWindowsHook WINELIB_NAME(UnhookWindowsHook)
BOOL16     UnhookWindowsHookEx16(HHOOK);
BOOL32     UnhookWindowsHookEx32(HHOOK);
#define    UnhookWindowsHookEx WINELIB_NAME(UnhookWindowsHookEx)
BOOL16     UnionRect16(LPRECT16,const RECT16*,const RECT16*);
BOOL32     UnionRect32(LPRECT32,const RECT32*,const RECT32*);
#define    UnionRect WINELIB_NAME(UnionRect)
void       UnlockSegment16(HGLOBAL16);
#define    UnlockSegment32(handle) GlobalUnfix((HANDLE32)(handle))
#define    UnlockSegment WINELIB_NAME(UnlockSegment)
BOOL16     UnrealizeObject16(HGDIOBJ16);
BOOL32     UnrealizeObject32(HGDIOBJ32);
#define    UnrealizeObject WINELIB_NAME(UnrealizeObject)
BOOL16     UnregisterClass16(SEGPTR,HINSTANCE16);
BOOL32     UnregisterClass32A(LPCSTR,HINSTANCE32);
BOOL32     UnregisterClass32W(LPCWSTR,HINSTANCE32);
#define    UnregisterClass WINELIB_NAME_AW(UnregisterClass)
INT16      UpdateColors16(HDC16);
BOOL32     UpdateColors32(HDC32);
#define    UpdateColors WINELIB_NAME(UpdateColors)
VOID       UpdateWindow16(HWND16);
VOID       UpdateWindow32(HWND32);
#define    UpdateWindow WINELIB_NAME(UpdateWindow)
VOID       ValidateRect16(HWND16,const RECT16*);
VOID       ValidateRect32(HWND32,const RECT32*);
#define    ValidateRect WINELIB_NAME(ValidateRect)
VOID       ValidateRgn16(HWND16,HRGN16);
VOID       ValidateRgn32(HWND32,HRGN32);
#define    ValidateRgn WINELIB_NAME(ValidateRgn)
DWORD      VerFindFile16(UINT16,LPCSTR,LPCSTR,LPCSTR,LPSTR,UINT16*,LPSTR,UINT16*);
DWORD      VerFindFile32A(UINT32,LPCSTR,LPCSTR,LPCSTR,LPSTR,UINT32*,LPSTR,UINT32*);
DWORD      VerFindFile32W(UINT32,LPCWSTR,LPCWSTR,LPCWSTR,LPWSTR,UINT32*,LPWSTR,UINT32*);
#define    VerFindFile WINELIB_NAME_AW(VerFindFile)
DWORD      VerInstallFile16(UINT16,LPCSTR,LPCSTR,LPCSTR,LPCSTR,LPCSTR,LPSTR,UINT16*);
DWORD      VerInstallFile32A(UINT32,LPCSTR,LPCSTR,LPCSTR,LPCSTR,LPCSTR,LPSTR,UINT32*);
DWORD      VerInstallFile32W(UINT32,LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR,LPWSTR,UINT32*);
#define    VerInstallFile WINELIB_NAME_AW(VerInstallFile)
DWORD      VerLanguageName16(UINT16,LPSTR,UINT16);
DWORD      VerLanguageName32A(UINT32,LPSTR,UINT32);
DWORD      VerLanguageName32W(UINT32,LPWSTR,UINT32);
#define    VerLanguageName WINELIB_NAME_AW(VerLanguageName)
DWORD      VerQueryValue16(SEGPTR,LPCSTR,SEGPTR*,UINT16*);
DWORD      VerQueryValue32A(LPVOID,LPCSTR,LPVOID*,UINT32*);
DWORD      VerQueryValue32W(LPVOID,LPCWSTR,LPVOID*,UINT32*);
#define    VerQueryValue WINELIB_NAME_AW(VerQueryValue)
WORD       VkKeyScan16(CHAR);
WORD       VkKeyScan32A(CHAR);
WORD       VkKeyScan32W(WCHAR);
#define    VkKeyScan WINELIB_NAME_AW(VkKeyScan)
INT16      WaitSoundState16(INT16);
DWORD      WaitSoundState32(DWORD);
#define    WaitSoundState WINELIB_NAME(WaitSoundState)
HWND16     WindowFromDC16(HDC16);
HWND32     WindowFromDC32(HDC32);
#define    WindowFromDC WINELIB_NAME(WindowFromDC)
HWND16     WindowFromPoint16(POINT16);
HWND32     WindowFromPoint32(POINT32);
#define    WindowFromPoint WINELIB_NAME(WindowFromPoint)
BOOL16     WritePrivateProfileString16(LPCSTR,LPCSTR,LPCSTR,LPCSTR);
BOOL32     WritePrivateProfileString32A(LPCSTR,LPCSTR,LPCSTR,LPCSTR);
BOOL32     WritePrivateProfileString32W(LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR);
#define    WritePrivateProfileString WINELIB_NAME_AW(WritePrivateProfileString)
BOOL16     WriteProfileString16(LPCSTR,LPCSTR,LPCSTR);
BOOL32     WriteProfileString32A(LPCSTR,LPCSTR,LPCSTR);
BOOL32     WriteProfileString32W(LPCWSTR,LPCWSTR,LPCWSTR);
#define    WriteProfileString WINELIB_NAME_AW(WriteProfileString)
SEGPTR     lstrcat16(SEGPTR,SEGPTR);
LPSTR      lstrcat32A(LPSTR,LPCSTR);
LPWSTR     lstrcat32W(LPWSTR,LPCWSTR);
#define    lstrcat WINELIB_NAME_AW(lstrcat)
SEGPTR     lstrcatn16(SEGPTR,SEGPTR,INT16);
LPSTR      lstrcatn32A(LPSTR,LPCSTR,INT32);
LPWSTR     lstrcatn32W(LPWSTR,LPCWSTR,INT32);
#define    lstrcatn WINELIB_NAME_AW(lstrcatn)
INT16      lstrcmp16(LPCSTR,LPCSTR);
INT32      lstrcmp32A(LPCSTR,LPCSTR);
INT32      lstrcmp32W(LPCWSTR,LPCWSTR);
#define    lstrcmp WINELIB_NAME_AW(lstrcmp)
INT16      lstrcmpi16(LPCSTR,LPCSTR);
INT32      lstrcmpi32A(LPCSTR,LPCSTR);
INT32      lstrcmpi32W(LPCWSTR,LPCWSTR);
#define    lstrcmpi WINELIB_NAME_AW(lstrcmpi)
SEGPTR     lstrcpy16(SEGPTR,SEGPTR);
LPSTR      lstrcpy32A(LPSTR,LPCSTR);
LPWSTR     lstrcpy32W(LPWSTR,LPCWSTR);
#define    lstrcpy WINELIB_NAME_AW(lstrcpy)
SEGPTR     lstrcpyn16(SEGPTR,SEGPTR,INT16);
LPSTR      lstrcpyn32A(LPSTR,LPCSTR,INT32);
LPWSTR     lstrcpyn32W(LPWSTR,LPCWSTR,INT32);
#define    lstrcpyn WINELIB_NAME_AW(lstrcpyn)
INT16      lstrlen16(LPCSTR);
INT32      lstrlen32A(LPCSTR);
INT32      lstrlen32W(LPCWSTR);
#define    lstrlen WINELIB_NAME_AW(lstrlen)
HINSTANCE16 WinExec16(LPCSTR,UINT16);
HINSTANCE32 WinExec32(LPCSTR,UINT32);
#define    WinExec WINELIB_NAME(WinExec)
BOOL16     WinHelp16(HWND16,LPCSTR,UINT16,DWORD);
BOOL32     WinHelp32A(HWND32,LPCSTR,UINT32,DWORD);
BOOL32     WinHelp32W(HWND32,LPCWSTR,UINT32,DWORD);
#define    WinHelp WINELIB_NAME_AW(WinHelp)
INT16      wsnprintf16(LPSTR,UINT16,LPCSTR,...);
INT32      wsnprintf32A(LPSTR,UINT32,LPCSTR,...);
INT32      wsnprintf32W(LPWSTR,UINT32,LPCWSTR,...);
#define    wsnprintf WINELIB_NAME_AW(wsnprintf)
INT16      wsprintf16(LPSTR,LPCSTR,...);
INT32      wsprintf32A(LPSTR,LPCSTR,...);
INT32      wsprintf32W(LPWSTR,LPCWSTR,...);
#define    wsprintf WINELIB_NAME_AW(wsprintf)
INT16      wvsnprintf16(LPSTR,UINT16,LPCSTR,LPCVOID);
INT32      wvsnprintf32A(LPSTR,UINT32,LPCSTR,LPCVOID);
INT32      wvsnprintf32W(LPWSTR,UINT32,LPCWSTR,LPCVOID);
#define    wvsnprintf WINELIB_NAME_AW(wvsnprintf)
INT16      wvsprintf16(LPSTR,LPCSTR,LPCVOID);
INT32      wvsprintf32A(LPSTR,LPCSTR,LPCVOID);
INT32      wvsprintf32W(LPWSTR,LPCWSTR,LPCVOID);
#define    wvsprintf WINELIB_NAME_AW(wvsprintf)
LONG       _hread16(HFILE16,LPVOID,LONG);
LONG       _hread32(HFILE32,LPVOID,LONG);
#define    _hread WINELIB_NAME(_hread)
LONG       _hwrite16(HFILE16,LPCSTR,LONG);
LONG       _hwrite32(HFILE32,LPCSTR,LONG);
#define    _hwrite WINELIB_NAME(_hwrite)
HFILE16    _lcreat16(LPCSTR,INT16);
HFILE32    _lcreat32(LPCSTR,INT32);
#define    _lcreat WINELIB_NAME(_lcreat)
HFILE16    _lclose16(HFILE16);
HFILE32    _lclose32(HFILE32);
#define    _lclose WINELIB_NAME(_lclose)
LONG       _llseek16(HFILE16,LONG,INT16);
LONG       _llseek32(HFILE32,LONG,INT32);
#define    _llseek WINELIB_NAME(_llseek)
HFILE16    _lopen16(LPCSTR,INT16);
HFILE32    _lopen32(LPCSTR,INT32);
#define    _lopen WINELIB_NAME(_lopen)
UINT16     _lread16(HFILE16,LPVOID,UINT16);
UINT32     _lread32(HFILE32,LPVOID,UINT32);
#define    _lread WINELIB_NAME(_lread)
UINT16     _lwrite16(HFILE16,LPCSTR,UINT16);
UINT32     _lwrite32(HFILE32,LPCSTR,UINT32);
#define    _lwrite WINELIB_NAME(_lwrite)

/* Extra functions that don't exist in the Windows API */

INT32      LoadMessage32A(HINSTANCE32,UINT32,WORD,LPSTR,INT32);
INT32      LoadMessage32W(HINSTANCE32,UINT32,WORD,LPWSTR,INT32);
SEGPTR     WIN16_GlobalLock16(HGLOBAL16);
SEGPTR     WIN16_LockResource(HGLOBAL16);
LONG       WIN16_hread(HFILE16,SEGPTR,LONG);
INT32      lstrncmp32A(LPCSTR,LPCSTR,INT32);
INT32      lstrncmp32W(LPCWSTR,LPCWSTR,INT32);
INT32      lstrncmpi32A(LPCSTR,LPCSTR,INT32);
INT32      lstrncmpi32W(LPCWSTR,LPCWSTR,INT32);
LPWSTR     lstrcpyAtoW(LPWSTR,LPCSTR);
LPSTR      lstrcpyWtoA(LPSTR,LPCWSTR);
LPWSTR     lstrcpynAtoW(LPWSTR,LPCSTR,INT32);
LPSTR      lstrcpynWtoA(LPSTR,LPCWSTR,INT32);

#ifdef __cplusplus
}
#endif

#endif  /* __WINE_WINDOWS_H */
