Release 970305

Sun Mar  2 14:57:37 1997  Alexandre Julliard  <julliard@lrc.epfl.ch>

	* [*/*]
	Completed transition to new Win32 types.

	* [tools/build.c]
	Changed CallTo16_regs to take a CONTEXT argument.

	* [memory/virtual.c]
	Rewrote Virtual* functions. Implemented CreateFileMapping and
	OpenFileMapping. Broke MapViewOfFile ;-)

	* [win32/k32obj.c]
	Implemented named objects.

Sun Mar  2 00:33:21 1997  Mikolaj Zalewski <zmikolaj@free.polbox.pl>

	* [misc/ole2nls.c] [resources/sysres_Pl.c]
	Added Polish language support.

Sat Mar  1 13:31:25 1997  David Faure <david.faure@ifhamy.insa-lyon.fr>

	* [windows/keyboard.c]
	Wrote VkKeyScan and tested with Winword. Works ok except for dead
	chars.

Fri Feb 28 09:34:03 1997  John Harvey <john@division.co.uk>

	* [graphics/win16drv/font.c] [graphics/win16drv/init.c]
	  [graphics/win16drv/obects.c]
	Added start of SelectObject call for printer driver. Write should
	now run with the printer driver enabled.

Wed Feb 26 20:03:32 1997  Marcus Meissner <msmeissn@cip.informatik.uni-erlangen.de>

	* [debugger/*.c]
	Re-added a disassembly command (list serves another functionality
	now).

	* [loader/pe_resource.c]
	Added # support.

	* [misc/ole2nls.c]
	GetStringType* added.

	* [objects/color.c]
	VGA16 fixes.

	* [windows/class.c]
	Look for global widget classes too in GetClassInfo32.

	* [windows/sysmetrics.c] [include/windows.h]
	Added Win32 sysmetrics.

Sat Feb 22 23:56:29 1997  Jukka Iivonen <iivonen@cc.helsinki.fi>

	* [documentation/languages]
	The fourth case updated.

	* [if1632/ntdll.spec]
	Added some is* and to* functions.

Sat Feb 22 23:05:47 1997  Morten Welinder  <terra@diku.dk>

	* [configure.in]
	Add tests for wait4 and waitpid.

	* [loader/signal.c]
	Clean up OS-dependent code.  I hope I got it right, :-)

	* [tools/wineconf]
	Recognise vfat file systems.  Ignore floppy drives specified in
	/etc/fstab.

	* [files/*]
	Fix function names in error messages.

Sat Feb 22 06:15:13 1997  Pablo Saratxaga <srtxg@chanae.stben.be>

	* [windows/keyboard.c] [windows/message.c]
	Support for more latin alphabet dead keys for iso-8859-{1,2,3,4,9}
	characters sets.

Fri Feb 21 20:37:50 1997  Huw D M Davies <h.davies1@physics.oxford.ac.uk>

	* [controls/edit.c]
	Fix incorrect arg order in LOCAL_Alloc() call.

Fri Feb 21 18:19:17 1997  Andrew Taylor  <andrew@riscan.com>

	* [multimedia/mmsystem.c] [multimedia/mcistring.c]
	Fixed bug related to device IDs returned by multimedia
	system.  Implemented mciGetDeviceID.

Sat Feb 15 00:58:19 1997  Jimen Ching  <jching@aloha.com>

	* [debugger/dbg.y]
	Do not dereference invalid expressions.
diff --git a/include/advapi32.h b/include/advapi32.h
deleted file mode 100644
index 3bd8cff..0000000
--- a/include/advapi32.h
+++ /dev/null
@@ -1,7 +0,0 @@
-#ifndef __WINE_ADVAPI32_H
-#define __WINE_ADVAPI32_H
-#include "shell.h"
-
-BOOL GetUserNameA (char * lpBuffer, DWORD  *nSize);
-
-#endif  /* __WINE_ADVAPI32_H */
diff --git a/include/callback.h b/include/callback.h
index 9dcf165..7ef5fb2 100644
--- a/include/callback.h
+++ b/include/callback.h
@@ -8,6 +8,7 @@
 #define __WINE_CALLBACK_H
 
 #include "wintypes.h"
+#include "winnt.h"
 
 extern
 int CallTo32_LargeStack( int (*func)(), int nbargs, ... );
@@ -20,6 +21,7 @@
 
 #ifndef WINELIB
 
+extern void CallTo16_regs_     ( const CONTEXT *context );
 extern WORD CallTo16_word_w    ( FARPROC16, WORD );
 extern WORD CallTo16_word_ww   ( FARPROC16, WORD, WORD );
 extern WORD CallTo16_word_wl   ( FARPROC16, WORD, LONG );
@@ -46,10 +48,6 @@
 				       LONG, WORD, LONG, LONG, LONG, LONG, 
 				       LONG, WORD);
 
-
-extern WORD CallTo16_regs_( FARPROC16 func, WORD ds, WORD es, WORD bp, WORD ax,
-                            WORD bx, WORD cx, WORD dx, WORD si, WORD di );
-
 #define CallDriverProc( func, dwId, msg, hdrvr, lparam1, lparam2 ) \
     CallTo16_long_lwwll( func, dwId, msg, hdrvr, lparam1, lparam2 )
 #define CallTimeFuncProc( func, id, msg, dwUser, dw1, dw2 ) \
diff --git a/include/clipboard.h b/include/clipboard.h
index 34f3bcf..d0070df 100644
--- a/include/clipboard.h
+++ b/include/clipboard.h
@@ -4,6 +4,6 @@
 void CLIPBOARD_ReadSelection(Window w,Atom prop);
 void CLIPBOARD_ReleaseSelection(Window w,HWND32 hwnd);
 void CLIPBOARD_DisOwn(WND* pWnd);
-BOOL CLIPBOARD_IsPresent(WORD wFormat);
+BOOL32 CLIPBOARD_IsPresent(WORD wFormat);
 
 #endif /* __WINE_CLIPBOARD_H */
diff --git a/include/combo.h b/include/combo.h
index 64511e5..82fe86c 100644
--- a/include/combo.h
+++ b/include/combo.h
@@ -17,5 +17,5 @@
   BOOL16  bRedrawFlag;
 } HEADCOMBO,*LPHEADCOMBO;
 
-LRESULT ComboBoxWndProc(HWND16 hwnd, UINT message, WPARAM16 wParam, LPARAM lParam);
-LRESULT ComboLBoxWndProc(HWND16 hwnd, UINT message, WPARAM16 wParam, LPARAM lParam);
+LRESULT ComboBoxWndProc(HWND16 hwnd, UINT16 message, WPARAM16 wParam, LPARAM lParam);
+LRESULT ComboLBoxWndProc(HWND16 hwnd, UINT16 message, WPARAM16 wParam, LPARAM lParam);
diff --git a/include/commdlg.h b/include/commdlg.h
index 1761991..4e85561 100644
--- a/include/commdlg.h
+++ b/include/commdlg.h
@@ -62,8 +62,8 @@
 	SEGPTR 		lpstrInitialDir;
 	SEGPTR 		lpstrTitle;
 	DWORD		Flags;
-	UINT		nFileOffset;
-	UINT		nFileExtension;
+	UINT16		nFileOffset;
+	UINT16		nFileExtension;
 	SEGPTR		lpstrDefExt;
 	LPARAM 		lCustData;
         WNDPROC16       lpfnHook;
@@ -101,8 +101,8 @@
 	DWORD		Flags;                  /* one or more of the FR_?? */
 	SEGPTR		lpstrFindWhat;          /* ptr. to search string    */
 	SEGPTR		lpstrReplaceWith;       /* ptr. to replace string   */
-	UINT		wFindWhatLen;           /* size of find buffer      */
-	UINT 		wReplaceWithLen;        /* size of replace buffer   */
+	UINT16		wFindWhatLen;           /* size of find buffer      */
+	UINT16 		wReplaceWithLen;        /* size of replace buffer   */
 	LPARAM 		lCustData;              /* data passed to hook fn.  */
         WNDPROC16       lpfnHook;
 	SEGPTR 		lpTemplateName;         /* custom template name     */
@@ -145,7 +145,7 @@
 							/* contains cust. dlg. template  */
 	SEGPTR			lpszStyle WINE_PACKED;  /* return the style field here   */
 							/* must be LF_FACESIZE or bigger */
-	UINT			nFontType;          	/* same value reported to the    */
+	UINT16			nFontType;          	/* same value reported to the    */
 						    	/* EnumFonts callback with the   */
 							/* extra FONTTYPE_ bits added    */
 	short			nSizeMin WINE_PACKED;   /* minimum pt size allowed & */
@@ -210,11 +210,11 @@
 	HGLOBAL16       hDevNames;
 	HDC16	       	hDC;
 	DWORD 		Flags;
-	UINT		nFromPage;
-	UINT		nToPage;
-	UINT		nMinPage;
-	UINT		nMaxPage;
-	UINT		nCopies;
+	UINT16		nFromPage;
+	UINT16		nToPage;
+	UINT16		nMinPage;
+	UINT16		nMaxPage;
+	UINT16		nCopies;
 	HINSTANCE16 	hInstance;
 	LPARAM 		lCustData;
         WNDPROC16       lpfnPrintHook;
@@ -250,10 +250,10 @@
 #define PD_HIDEPRINTTOFILE           0x00100000
 
 typedef struct {
-	UINT 	wDriverOffset;
-	UINT 	wDeviceOffset;
-	UINT 	wOutputOffset;
-	UINT 	wDefault;
+	UINT16 	wDriverOffset;
+	UINT16 	wDeviceOffset;
+	UINT16 	wOutputOffset;
+	UINT16 	wDefault;
 	} DEVNAMES;
 typedef DEVNAMES * LPDEVNAMES;
 
@@ -275,24 +275,24 @@
 #define CDERR_NOHOOK           0x000B
 #define CDERR_REGISTERMSGFAIL  0x000C
 
-BOOL  ChooseColor(LPCHOOSECOLOR lpChCol);
+BOOL16  ChooseColor(LPCHOOSECOLOR lpChCol);
 DWORD CommDlgExtendedError(void);
 HWND16 FindText( SEGPTR find);
-short GetFileTitle(LPCSTR lpFile, LPSTR lpTitle, UINT cbBuf);
-BOOL  GetOpenFileName(SEGPTR ofn);
-BOOL  GetSaveFileName(SEGPTR ofn);
-BOOL  PrintDlg( SEGPTR print);
+short GetFileTitle(LPCSTR lpFile, LPSTR lpTitle, UINT16 cbBuf);
+BOOL16  GetOpenFileName(SEGPTR ofn);
+BOOL16  GetSaveFileName(SEGPTR ofn);
+BOOL16  PrintDlg( SEGPTR print);
 HWND16 ReplaceText( SEGPTR find);
-BOOL  ChooseFont(LPCHOOSEFONT lpChFont);
+BOOL16  ChooseFont(LPCHOOSEFONT lpChFont);
 
-LRESULT FileOpenDlgProc(HWND16 hWnd, UINT wMsg, WPARAM16 wParam, LPARAM lParam);
-LRESULT FileSaveDlgProc(HWND16 hWnd, UINT wMsg, WPARAM16 wParam, LPARAM lParam);
-LRESULT ColorDlgProc(HWND16 hWnd, UINT wMsg, WPARAM16 wParam, LPARAM lParam);
-LRESULT FindTextDlgProc(HWND16 hWnd, UINT wMsg, WPARAM16 wParam, LPARAM lParam);
-LRESULT ReplaceTextDlgProc(HWND16 hWnd, UINT wMsg, WPARAM16 wParam, LPARAM lParam);
-LRESULT PrintDlgProc(HWND16 hWnd, UINT wMsg, WPARAM16 wParam, LPARAM lParam);
-LRESULT PrintSetupDlgProc(HWND16 hWnd, UINT wMsg, WPARAM16 wParam, LPARAM lParam);
-LRESULT FormatCharDlgProc(HWND16 hWnd, UINT wMsg, WPARAM16 wParam, LPARAM lParam);
+LRESULT FileOpenDlgProc(HWND16 hWnd, UINT16 wMsg, WPARAM16 wParam, LPARAM lParam);
+LRESULT FileSaveDlgProc(HWND16 hWnd, UINT16 wMsg, WPARAM16 wParam, LPARAM lParam);
+LRESULT ColorDlgProc(HWND16 hWnd, UINT16 wMsg, WPARAM16 wParam, LPARAM lParam);
+LRESULT FindTextDlgProc(HWND16 hWnd, UINT16 wMsg, WPARAM16 wParam, LPARAM lParam);
+LRESULT ReplaceTextDlgProc(HWND16 hWnd, UINT16 wMsg, WPARAM16 wParam, LPARAM lParam);
+LRESULT PrintDlgProc(HWND16 hWnd, UINT16 wMsg, WPARAM16 wParam, LPARAM lParam);
+LRESULT PrintSetupDlgProc(HWND16 hWnd, UINT16 wMsg, WPARAM16 wParam, LPARAM lParam);
+LRESULT FormatCharDlgProc(HWND16 hWnd, UINT16 wMsg, WPARAM16 wParam, LPARAM lParam);
 
 #ifdef __cplusplus
 }
diff --git a/include/config.h.in b/include/config.h.in
index cf00d28..12cd82d 100644
--- a/include/config.h.in
+++ b/include/config.h.in
@@ -26,3 +26,9 @@
 
 /* Define if you have the usleep function.  */
 #undef HAVE_USLEEP
+
+/* Define if you have the wait4 function.  */
+#undef HAVE_WAIT4
+
+/* Define if you have the waitpid function.  */
+#undef HAVE_WAITPID
diff --git a/include/dde_proc.h b/include/dde_proc.h
index 84697cf..e8a7ab1 100644
--- a/include/dde_proc.h
+++ b/include/dde_proc.h
@@ -51,9 +51,9 @@
 void dde_wnd_setup();		   /* setup Data structure of DDE windows */
 
 /* Send ack. to hnd indicating that posted/sent msg. got to destination*/
-void dde_proc_send_ack(HWND16 wnd, BOOL val);
-BOOL DDE_PostMessage( MSG16 *msg);
-BOOL DDE_SendMessage( MSG16 *msg);
+void dde_proc_send_ack(HWND16 wnd, BOOL32 val);
+BOOL32 DDE_PostMessage( MSG16 *msg);
+BOOL32 DDE_SendMessage( MSG16 *msg);
 int DDE_GetRemoteMessage();
 void DDE_DestroyWindow(HWND16 hwnd); /* delete DDE info regarding hwnd */
 void DDE_TestDDE(HWND16 hwnd);	   /* do we have dde handling in the window ?*/
diff --git a/include/debug.h b/include/debug.h
index 7dc0330..32bd72c 100644
--- a/include/debug.h
+++ b/include/debug.h
@@ -78,6 +78,7 @@
 #undef DEBUG_TIMER
 #undef DEBUG_TOOLHELP
 #undef DEBUG_VER
+#undef DEBUG_VIRTUAL
 #undef DEBUG_VXD
 #undef DEBUG_WIN
 #undef DEBUG_WIN16DRV
@@ -158,6 +159,7 @@
 #define DEBUG_TIMER
 #define DEBUG_TOOLHELP
 #define DEBUG_VER
+#define DEBUG_VIRTUAL
 #define DEBUG_VXD
 #define DEBUG_WIN
 #define DEBUG_WIN16DRV
@@ -528,6 +530,11 @@
 #else
     0,
 #endif
+#ifdef DEBUG_VIRTUAL
+    1,
+#else
+    0,
+#endif
 #ifdef DEBUG_VXD
     1,
 #else
@@ -1497,8 +1504,21 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_vxd if(!debug_msg_enabled[72]) ; else fprintf
-#define debugging_vxd debug_msg_enabled[72]
+#define dprintf_virtual if(!debug_msg_enabled[72]) ; else fprintf
+#define debugging_virtual debug_msg_enabled[72]
+#else
+#ifdef DEBUG_VIRTUAL
+#define dprintf_virtual fprintf
+#define debugging_virtual 1
+#else
+#define dprintf_virtual while(0) fprintf
+#define debugging_virtual 0
+#endif
+#endif
+
+#ifdef DEBUG_RUNTIME
+#define dprintf_vxd if(!debug_msg_enabled[73]) ; else fprintf
+#define debugging_vxd debug_msg_enabled[73]
 #else
 #ifdef DEBUG_VXD
 #define dprintf_vxd fprintf
@@ -1510,8 +1530,8 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_win if(!debug_msg_enabled[73]) ; else fprintf
-#define debugging_win debug_msg_enabled[73]
+#define dprintf_win if(!debug_msg_enabled[74]) ; else fprintf
+#define debugging_win debug_msg_enabled[74]
 #else
 #ifdef DEBUG_WIN
 #define dprintf_win fprintf
@@ -1523,8 +1543,8 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_win16drv if(!debug_msg_enabled[74]) ; else fprintf
-#define debugging_win16drv debug_msg_enabled[74]
+#define dprintf_win16drv if(!debug_msg_enabled[75]) ; else fprintf
+#define debugging_win16drv debug_msg_enabled[75]
 #else
 #ifdef DEBUG_WIN16DRV
 #define dprintf_win16drv fprintf
@@ -1536,8 +1556,8 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_win32 if(!debug_msg_enabled[75]) ; else fprintf
-#define debugging_win32 debug_msg_enabled[75]
+#define dprintf_win32 if(!debug_msg_enabled[76]) ; else fprintf
+#define debugging_win32 debug_msg_enabled[76]
 #else
 #ifdef DEBUG_WIN32
 #define dprintf_win32 fprintf
@@ -1549,8 +1569,8 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_winsock if(!debug_msg_enabled[76]) ; else fprintf
-#define debugging_winsock debug_msg_enabled[76]
+#define dprintf_winsock if(!debug_msg_enabled[77]) ; else fprintf
+#define debugging_winsock debug_msg_enabled[77]
 #else
 #ifdef DEBUG_WINSOCK
 #define dprintf_winsock fprintf
@@ -1637,6 +1657,7 @@
     "timer",
     "toolhelp",
     "ver",
+    "virtual",
     "vxd",
     "win",
     "win16drv",
diff --git a/include/debugger.h b/include/debugger.h
index 1a1f02a..a6670ce 100644
--- a/include/debugger.h
+++ b/include/debugger.h
@@ -307,6 +307,7 @@
 extern void DEBUG_List(struct list_id * line1, struct list_id * line2,  
 		       int delta);
 extern void DEBUG_NukePath(void);
+extern void DEBUG_Disassemble( const DBG_ADDR *, const DBG_ADDR*, int offset );
 
   /* debugger/dbg.y */
 extern void wine_debug( int signal, SIGCONTEXT *regs );
diff --git a/include/driver.h b/include/driver.h
index 16ee0e2..3eb7b7d 100644
--- a/include/driver.h
+++ b/include/driver.h
@@ -54,7 +54,7 @@
     WORD                  count;
     struct tagDRIVERITEM *lpPrevItem;
     struct tagDRIVERITEM *lpNextItem;
-    DRIVERPROC            lpDrvProc;
+    DRIVERPROC16          lpDrvProc;
 } DRIVERITEM, *LPDRIVERITEM;
 
 LRESULT DefDriverProc(DWORD dwDevID, HDRVR16 hDriv, UINT16 wMsg, 
diff --git a/include/file.h b/include/file.h
index a2bd376..bb33157 100644
--- a/include/file.h
+++ b/include/file.h
@@ -13,6 +13,16 @@
 
 #define MAX_PATHNAME_LEN   1024
 
+/* The file object */
+typedef struct
+{
+    K32OBJ    header;
+    int       unix_handle;
+    int       mode;
+    char     *unix_name;
+    DWORD     type;         /* Type for win32 apps */
+} FILE_OBJECT;
+
 /* Definition of a full DOS file name */
 typedef struct
 {
@@ -33,6 +43,10 @@
 extern HFILE32 FILE_Dup2( HFILE32 hFile1, HFILE32 hFile2 );
 extern HFILE32 FILE_Open( LPCSTR path, INT32 mode );
 extern BOOL32 FILE_SetFileType( HFILE32 hFile, DWORD type );
+extern LPVOID FILE_mmap( FILE_OBJECT *file, LPVOID start,
+                         DWORD size_high, DWORD size_low,
+                         DWORD offset_high, DWORD offset_low,
+                         int prot, int flags );
 extern HFILE32 _lcreat_uniq( LPCSTR path, INT32 attr );
 
 /* files/directory.c */
diff --git a/include/font.h b/include/font.h
index 12456ad..528fd66 100644
--- a/include/font.h
+++ b/include/font.h
@@ -24,26 +24,6 @@
 #define MAX_FONTS	256
 extern LPLOGFONT16 lpLogFontList[MAX_FONTS+1];
 
-/* may be switched... */
-#define GGO_BITMAP	0x4F4D
-#define GGO_NATIVE	0x4F50
-typedef struct
-{
-	UINT16	gmBlackBoxX;
-	UINT16	gmBlackBoxY;
-	POINT16	gmptGlyphOrigin;
-	int	gmCellIncX;
-	int	gmCellIncY;
-} GLYPHMETRICS,*LPGLYPHMETRICS;
-typedef struct
-{
-	DWORD	eM11; /* all type FIXED in Borlands Handbook */
-	DWORD	eM12; 
-	DWORD	eM21;
-	DWORD	eM22;
-} MAT2,*LPMAT2;
-
-
 extern BOOL32 FONT_Init( void );
 extern INT16 FONT_GetObject16( FONTOBJ * font, INT16 count, LPSTR buffer );
 extern INT32 FONT_GetObject32A( FONTOBJ * font, INT32 count, LPSTR buffer );
diff --git a/include/handle32.h b/include/handle32.h
index 7699eed..9fa3021 100644
--- a/include/handle32.h
+++ b/include/handle32.h
@@ -42,5 +42,8 @@
 
 extern void K32OBJ_IncCount( K32OBJ *ptr );
 extern void K32OBJ_DecCount( K32OBJ *ptr );
+extern BOOL32 K32OBJ_AddName( K32OBJ *obj, LPCSTR name );
+extern K32OBJ *K32OBJ_FindName( LPCSTR name );
+extern K32OBJ *K32OBJ_FindNameType( LPCSTR name, K32OBJ_TYPE type );
 
 #endif /* __WINE_HANDLE32_H */
diff --git a/include/libres.h b/include/libres.h
index 6014a3b..addeb84 100644
--- a/include/libres.h
+++ b/include/libres.h
@@ -4,8 +4,6 @@
 #ifndef __WINE_LIBRES_H
 #define __WINE_LIBRES_H
 
-#ifdef WINELIB
-
 #include "wintypes.h"
 #include "resource.h"
 
@@ -18,6 +16,4 @@
 extern LPVOID LIBRES_LockResource( HGLOBAL32 handle );
 extern DWORD LIBRES_SizeofResource( HINSTANCE32 hModule, HRSRC32 hRsrc );
 
-#endif /* WINELIB */
-
 #endif
diff --git a/include/listbox.h b/include/listbox.h
index d3f97ad..27cee05 100644
--- a/include/listbox.h
+++ b/include/listbox.h
@@ -4,7 +4,7 @@
 
 typedef struct tagLISTSTRUCT {
         MEASUREITEMSTRUCT16 mis;
-        UINT            itemState;
+        UINT16            itemState;
         RECT16          itemRect;
 	HLOCAL16	hData;
 	char            *itemText;
@@ -28,12 +28,12 @@
 	DWORD   dwStyle;      /* added for COMBOLBOX style faking */
 	HWND16  hParent;
 	HFONT16 hFont;
-	BOOL    bRedrawFlag;
-        BOOL    HasStrings;
-        BOOL    OwnerDrawn;
+	BOOL32  bRedrawFlag;
+        BOOL32  HasStrings;
+        BOOL32  OwnerDrawn;
 	WORD    iNumStops;
 	LPINT16 TabStops;
-        BOOL    needMeasure;
+        BOOL32  needMeasure;
 	HGLOBAL16 HeapSel;
 /*	MDESC   *Heap; */
 } HEADLIST,*LPHEADLIST;
@@ -44,22 +44,22 @@
 
 extern void ListBoxSendNotification(LPHEADLIST lphl, WORD code);
 
-extern LPLISTSTRUCT ListBoxGetItem(LPHEADLIST lphl, UINT uIndex);
+extern LPLISTSTRUCT ListBoxGetItem(LPHEADLIST lphl, UINT16 uIndex);
 extern int ListMaxFirstVisible(LPHEADLIST lphl);
 extern int ListBoxScrollToFocus(LPHEADLIST lphl);
 extern int ListBoxAddString(LPHEADLIST lphl, SEGPTR itemData);
-extern int ListBoxInsertString(LPHEADLIST lphl, UINT uIndex, LPCSTR newstr);
-extern int ListBoxGetText(LPHEADLIST lphl, UINT uIndex, LPSTR OutStr);
-extern DWORD ListBoxGetItemData(LPHEADLIST lphl, UINT uIndex);
-extern int ListBoxSetItemData(LPHEADLIST lphl, UINT uIndex, DWORD ItemData);
-extern int ListBoxDeleteString(LPHEADLIST lphl, UINT uIndex);
-extern int ListBoxFindString(LPHEADLIST lphl, UINT nFirst, SEGPTR MatchStr);
-extern int ListBoxFindStringExact(LPHEADLIST lphl, UINT nFirst, SEGPTR MatchStr);
+extern int ListBoxInsertString(LPHEADLIST lphl, UINT16 uIndex, LPCSTR newstr);
+extern int ListBoxGetText(LPHEADLIST lphl, UINT16 uIndex, LPSTR OutStr);
+extern DWORD ListBoxGetItemData(LPHEADLIST lphl, UINT16 uIndex);
+extern int ListBoxSetItemData(LPHEADLIST lphl, UINT16 uIndex, DWORD ItemData);
+extern int ListBoxDeleteString(LPHEADLIST lphl, UINT16 uIndex);
+extern int ListBoxFindString(LPHEADLIST lphl, UINT16 nFirst, SEGPTR MatchStr);
+extern int ListBoxFindStringExact(LPHEADLIST lphl, UINT16 nFirst, SEGPTR MatchStr);
 extern int ListBoxResetContent(LPHEADLIST lphl);
 extern int ListBoxSetCurSel(LPHEADLIST lphl, WORD wIndex);
 extern int ListBoxSetSel(LPHEADLIST lphl, WORD wIndex, WORD state);
 extern int ListBoxGetSel(LPHEADLIST lphl, WORD wIndex);
-extern LONG ListBoxDirectory(LPHEADLIST lphl, UINT attrib, LPCSTR filespec);
+extern LONG ListBoxDirectory(LPHEADLIST lphl, UINT16 attrib, LPCSTR filespec);
 extern int ListBoxGetItemRect(LPHEADLIST lphl, WORD wIndex, LPRECT16 rect);
 extern int ListBoxSetItemHeight(LPHEADLIST lphl, WORD wIndex, long height);
 extern int ListBoxFindNextMatch(LPHEADLIST lphl, WORD wChar);
diff --git a/include/mdi.h b/include/mdi.h
index ee6171f..0ad2700 100644
--- a/include/mdi.h
+++ b/include/mdi.h
@@ -20,7 +20,7 @@
 
 #define WM_MDICALCCHILDSCROLL   0x10AC /* this is exactly what Windows uses */
 
-extern LRESULT MDIClientWndProc(HWND16 hwnd, UINT message, 
+extern LRESULT MDIClientWndProc(HWND16 hwnd, UINT16 message, 
 				WPARAM16 wParam, LPARAM lParam); /* mdi.c */
 
 typedef struct tagMDIWCL
diff --git a/include/mmsystem.h b/include/mmsystem.h
index 4f96014..56bc611 100644
--- a/include/mmsystem.h
+++ b/include/mmsystem.h
@@ -19,7 +19,7 @@
 typedef WORD    VERSION;        /* major (high byte), minor (low byte) */
 
 typedef struct {
-    UINT    wType;              /* indicates the contents of the union */
+    UINT16    wType;              /* indicates the contents of the union */
     union {
         DWORD ms;               /* milliseconds */
         DWORD sample;           /* samples */
@@ -108,7 +108,7 @@
 #define CALLBACK_TASK       0x00020000l    /* dwCallback is a HTASK */
 #define CALLBACK_FUNCTION   0x00030000l    /* dwCallback is a FARPROC */
 
-typedef void (*LPDRVCALLBACK) (HDRVR16 h, UINT uMessage, DWORD dwUser, DWORD dw1, DWORD dw2);
+typedef void (*LPDRVCALLBACK) (HDRVR16 h, UINT16 uMessage, DWORD dwUser, DWORD dw1, DWORD dw2);
 
 #define MM_MICROSOFT            1       /* Microsoft Corp. */
 
@@ -132,7 +132,7 @@
 WORD mmsystemGetVersion(void);
 void OutputDebugStr(LPCSTR);
 
-BOOL sndPlaySound(LPCSTR lpszSoundName, UINT uFlags);
+BOOL16 sndPlaySound(LPCSTR lpszSoundName, UINT16 uFlags);
 
 #define SND_SYNC            0x0000  /* play synchronously (default) */
 #define SND_ASYNC           0x0001  /* play asynchronously */
@@ -182,12 +182,12 @@
 #define WHDR_INQUEUE    0x00000010  /* reserved for driver */
 
 typedef struct {
-    UINT    wMid;                  /* manufacturer ID */
-    UINT    wPid;                  /* product ID */
+    UINT16    wMid;                  /* manufacturer ID */
+    UINT16    wPid;                  /* product ID */
     VERSION vDriverVersion;        /* version of the driver */
     char    szPname[MAXPNAMELEN];  /* product name (NULL terminated string) */
     DWORD   dwFormats;             /* formats supported */
-    UINT    wChannels;             /* number of sources supported */
+    UINT16    wChannels;             /* number of sources supported */
     DWORD   dwSupport;             /* functionality supported by driver */
 } WAVEOUTCAPS, *LPWAVEOUTCAPS;
 
@@ -198,12 +198,12 @@
 #define WAVECAPS_SYNC           0x0010
 
 typedef struct {
-    UINT    wMid;                    /* manufacturer ID */
-    UINT    wPid;                    /* product ID */
+    UINT16    wMid;                    /* manufacturer ID */
+    UINT16    wPid;                    /* product ID */
     VERSION vDriverVersion;          /* version of the driver */
     char    szPname[MAXPNAMELEN];    /* product name (NULL terminated string) */
     DWORD   dwFormats;               /* formats supported */
-    UINT    wChannels;               /* number of channels supported */
+    UINT16    wChannels;               /* number of channels supported */
 } WAVEINCAPS, *LPWAVEINCAPS;
 
 #define WAVE_INVALIDFORMAT     0x00000000       /* invalid format */
@@ -236,57 +236,57 @@
     WORD        wBitsPerSample;
 } PCMWAVEFORMAT, *LPPCMWAVEFORMAT;
 
-UINT waveOutGetNumDevs(void);
-UINT waveOutGetDevCaps(UINT uDeviceID, WAVEOUTCAPS * lpCaps,
-    UINT uSize);
-UINT waveOutGetVolume(UINT uDeviceID, DWORD * lpdwVolume);
-UINT waveOutSetVolume(UINT uDeviceID, DWORD dwVolume);
-UINT waveOutGetErrorText(UINT uError, LPSTR lpText, UINT uSize);
-UINT waveGetErrorText(UINT uError, LPSTR lpText, UINT uSize);
-UINT waveOutOpen(HWAVEOUT16 * lphWaveOut, UINT uDeviceID,
+UINT16 waveOutGetNumDevs(void);
+UINT16 waveOutGetDevCaps(UINT16 uDeviceID, WAVEOUTCAPS * lpCaps,
+    UINT16 uSize);
+UINT16 waveOutGetVolume(UINT16 uDeviceID, DWORD * lpdwVolume);
+UINT16 waveOutSetVolume(UINT16 uDeviceID, DWORD dwVolume);
+UINT16 waveOutGetErrorText(UINT16 uError, LPSTR lpText, UINT16 uSize);
+UINT16 waveGetErrorText(UINT16 uError, LPSTR lpText, UINT16 uSize);
+UINT16 waveOutOpen(HWAVEOUT16 * lphWaveOut, UINT16 uDeviceID,
     const LPWAVEFORMAT lpFormat, DWORD dwCallback, DWORD dwInstance, DWORD dwFlags);
-UINT waveOutClose(HWAVEOUT16 hWaveOut);
-UINT waveOutPrepareHeader(HWAVEOUT16 hWaveOut,
-     WAVEHDR * lpWaveOutHdr, UINT uSize);
-UINT waveOutUnprepareHeader(HWAVEOUT16 hWaveOut,
-    WAVEHDR * lpWaveOutHdr, UINT uSize);
-UINT waveOutWrite(HWAVEOUT16 hWaveOut, WAVEHDR * lpWaveOutHdr,
-    UINT uSize);
-UINT waveOutPause(HWAVEOUT16 hWaveOut);
-UINT waveOutRestart(HWAVEOUT16 hWaveOut);
-UINT waveOutReset(HWAVEOUT16 hWaveOut);
-UINT waveOutBreakLoop(HWAVEOUT16 hWaveOut);
-UINT waveOutGetPosition(HWAVEOUT16 hWaveOut, MMTIME * lpInfo,
-    UINT uSize);
-UINT waveOutGetPitch(HWAVEOUT16 hWaveOut, DWORD * lpdwPitch);
-UINT waveOutSetPitch(HWAVEOUT16 hWaveOut, DWORD dwPitch);
-UINT waveOutGetPlaybackRate(HWAVEOUT16 hWaveOut, DWORD * lpdwRate);
-UINT waveOutSetPlaybackRate(HWAVEOUT16 hWaveOut, DWORD dwRate);
-UINT waveOutGetID(HWAVEOUT16 hWaveOut, UINT * lpuDeviceID);
+UINT16 waveOutClose(HWAVEOUT16 hWaveOut);
+UINT16 waveOutPrepareHeader(HWAVEOUT16 hWaveOut,
+     WAVEHDR * lpWaveOutHdr, UINT16 uSize);
+UINT16 waveOutUnprepareHeader(HWAVEOUT16 hWaveOut,
+    WAVEHDR * lpWaveOutHdr, UINT16 uSize);
+UINT16 waveOutWrite(HWAVEOUT16 hWaveOut, WAVEHDR * lpWaveOutHdr,
+    UINT16 uSize);
+UINT16 waveOutPause(HWAVEOUT16 hWaveOut);
+UINT16 waveOutRestart(HWAVEOUT16 hWaveOut);
+UINT16 waveOutReset(HWAVEOUT16 hWaveOut);
+UINT16 waveOutBreakLoop(HWAVEOUT16 hWaveOut);
+UINT16 waveOutGetPosition(HWAVEOUT16 hWaveOut, MMTIME * lpInfo,
+    UINT16 uSize);
+UINT16 waveOutGetPitch(HWAVEOUT16 hWaveOut, DWORD * lpdwPitch);
+UINT16 waveOutSetPitch(HWAVEOUT16 hWaveOut, DWORD dwPitch);
+UINT16 waveOutGetPlaybackRate(HWAVEOUT16 hWaveOut, DWORD * lpdwRate);
+UINT16 waveOutSetPlaybackRate(HWAVEOUT16 hWaveOut, DWORD dwRate);
+UINT16 waveOutGetID(HWAVEOUT16 hWaveOut, UINT16 * lpuDeviceID);
 
-DWORD waveOutMessage(HWAVEOUT16 hWaveOut, UINT uMessage, DWORD dw1, DWORD dw2);
+DWORD waveOutMessage(HWAVEOUT16 hWaveOut, UINT16 uMessage, DWORD dw1, DWORD dw2);
 
-UINT waveInGetNumDevs(void);
-UINT waveInGetDevCaps(UINT uDeviceID, WAVEINCAPS * lpCaps,
-    UINT uSize);
-UINT waveInGetErrorText(UINT uError, LPSTR lpText, UINT uSize);
-UINT waveInOpen(HWAVEIN16 * lphWaveIn, UINT uDeviceID,
+UINT16 waveInGetNumDevs(void);
+UINT16 waveInGetDevCaps(UINT16 uDeviceID, WAVEINCAPS * lpCaps,
+    UINT16 uSize);
+UINT16 waveInGetErrorText(UINT16 uError, LPSTR lpText, UINT16 uSize);
+UINT16 waveInOpen(HWAVEIN16 * lphWaveIn, UINT16 uDeviceID,
     const LPWAVEFORMAT lpFormat, DWORD dwCallback, DWORD dwInstance, DWORD dwFlags);
-UINT waveInClose(HWAVEIN16 hWaveIn);
-UINT waveInPrepareHeader(HWAVEIN16 hWaveIn,
-    WAVEHDR * lpWaveInHdr, UINT uSize);
-UINT waveInUnprepareHeader(HWAVEIN16 hWaveIn,
-    WAVEHDR * lpWaveInHdr, UINT uSize);
-UINT waveInAddBuffer(HWAVEIN16 hWaveIn,
-    WAVEHDR * lpWaveInHdr, UINT uSize);
-UINT waveInStart(HWAVEIN16 hWaveIn);
-UINT waveInStop(HWAVEIN16 hWaveIn);
-UINT waveInReset(HWAVEIN16 hWaveIn);
-UINT waveInGetPosition(HWAVEIN16 hWaveIn, MMTIME * lpInfo,
-    UINT uSize);
-UINT waveInGetID(HWAVEIN16 hWaveIn, UINT * lpuDeviceID);
+UINT16 waveInClose(HWAVEIN16 hWaveIn);
+UINT16 waveInPrepareHeader(HWAVEIN16 hWaveIn,
+    WAVEHDR * lpWaveInHdr, UINT16 uSize);
+UINT16 waveInUnprepareHeader(HWAVEIN16 hWaveIn,
+    WAVEHDR * lpWaveInHdr, UINT16 uSize);
+UINT16 waveInAddBuffer(HWAVEIN16 hWaveIn,
+    WAVEHDR * lpWaveInHdr, UINT16 uSize);
+UINT16 waveInStart(HWAVEIN16 hWaveIn);
+UINT16 waveInStop(HWAVEIN16 hWaveIn);
+UINT16 waveInReset(HWAVEIN16 hWaveIn);
+UINT16 waveInGetPosition(HWAVEIN16 hWaveIn, MMTIME * lpInfo,
+    UINT16 uSize);
+UINT16 waveInGetID(HWAVEIN16 hWaveIn, UINT16 * lpuDeviceID);
 
-DWORD waveInMessage(HWAVEIN16 hWaveIn, UINT uMessage, DWORD dw1, DWORD dw2);
+DWORD waveInMessage(HWAVEIN16 hWaveIn, UINT16 uMessage, DWORD dw1, DWORD dw2);
 
 #define MIDIERR_UNPREPARED    (MIDIERR_BASE + 0)   /* header not prepared */
 #define MIDIERR_STILLPLAYING  (MIDIERR_BASE + 1)   /* still something playing */
@@ -327,14 +327,14 @@
 #define MIDI_UNCACHE        4
 
 typedef struct {
-    UINT    wMid;                  /* manufacturer ID */
-    UINT    wPid;                  /* product ID */
+    UINT16    wMid;                  /* manufacturer ID */
+    UINT16    wPid;                  /* product ID */
     VERSION vDriverVersion;        /* version of the driver */
     char    szPname[MAXPNAMELEN];  /* product name (NULL terminated string) */
-    UINT    wTechnology;           /* type of device */
-    UINT    wVoices;               /* # of voices (internal synth only) */
-    UINT    wNotes;                /* max # of notes (internal synth only) */
-    UINT    wChannelMask;          /* channels used (internal synth only) */
+    UINT16    wTechnology;           /* type of device */
+    UINT16    wVoices;               /* # of voices (internal synth only) */
+    UINT16    wNotes;                /* max # of notes (internal synth only) */
+    UINT16    wChannelMask;          /* channels used (internal synth only) */
     DWORD   dwSupport;             /* functionality supported by driver */
 } MIDIOUTCAPS, *LPMIDIOUTCAPS;
 
@@ -349,8 +349,8 @@
 #define MIDICAPS_CACHE           0x0004
 
 typedef struct {
-    UINT    wMid;                  /* manufacturer ID */
-    UINT    wPid;                  /* product ID */
+    UINT16    wMid;                  /* manufacturer ID */
+    UINT16    wPid;                  /* product ID */
     VERSION vDriverVersion;        /* version of the driver */
     char    szPname[MAXPNAMELEN];  /* product name (NULL terminated string) */
 } MIDIINCAPS, *LPMIDIINCAPS;
@@ -369,60 +369,60 @@
 #define MHDR_PREPARED   0x00000002       /* set if header prepared */
 #define MHDR_INQUEUE    0x00000004       /* reserved for driver */
 
-UINT midiOutGetNumDevs(void);
-UINT midiOutGetDevCaps(UINT uDeviceID,
-    MIDIOUTCAPS * lpCaps, UINT uSize);
-UINT midiOutGetVolume(UINT uDeviceID, DWORD * lpdwVolume);
-UINT midiOutSetVolume(UINT uDeviceID, DWORD dwVolume);
-UINT midiOutGetErrorText(UINT uError, LPSTR lpText, UINT uSize);
-UINT midiGetErrorText(UINT uError, LPSTR lpText, UINT uSize);
-UINT midiOutOpen(HMIDIOUT16 * lphMidiOut, UINT uDeviceID,
+UINT16 midiOutGetNumDevs(void);
+UINT16 midiOutGetDevCaps(UINT16 uDeviceID,
+    MIDIOUTCAPS * lpCaps, UINT16 uSize);
+UINT16 midiOutGetVolume(UINT16 uDeviceID, DWORD * lpdwVolume);
+UINT16 midiOutSetVolume(UINT16 uDeviceID, DWORD dwVolume);
+UINT16 midiOutGetErrorText(UINT16 uError, LPSTR lpText, UINT16 uSize);
+UINT16 midiGetErrorText(UINT16 uError, LPSTR lpText, UINT16 uSize);
+UINT16 midiOutOpen(HMIDIOUT16 * lphMidiOut, UINT16 uDeviceID,
     DWORD dwCallback, DWORD dwInstance, DWORD dwFlags);
-UINT midiOutClose(HMIDIOUT16 hMidiOut);
-UINT midiOutPrepareHeader(HMIDIOUT16 hMidiOut,
-    MIDIHDR * lpMidiOutHdr, UINT uSize);
-UINT midiOutUnprepareHeader(HMIDIOUT16 hMidiOut,
-    MIDIHDR * lpMidiOutHdr, UINT uSize);
-UINT midiOutShortMsg(HMIDIOUT16 hMidiOut, DWORD dwMsg);
-UINT midiOutLongMsg(HMIDIOUT16 hMidiOut,
-    MIDIHDR * lpMidiOutHdr, UINT uSize);
-UINT midiOutReset(HMIDIOUT16 hMidiOut);
-UINT midiOutCachePatches(HMIDIOUT16 hMidiOut,
-    UINT uBank, WORD * lpwPatchArray, UINT uFlags);
-UINT midiOutCacheDrumPatches(HMIDIOUT16 hMidiOut,
-    UINT uPatch, WORD * lpwKeyArray, UINT uFlags);
-UINT midiOutGetID(HMIDIOUT16 hMidiOut, UINT * lpuDeviceID);
+UINT16 midiOutClose(HMIDIOUT16 hMidiOut);
+UINT16 midiOutPrepareHeader(HMIDIOUT16 hMidiOut,
+    MIDIHDR * lpMidiOutHdr, UINT16 uSize);
+UINT16 midiOutUnprepareHeader(HMIDIOUT16 hMidiOut,
+    MIDIHDR * lpMidiOutHdr, UINT16 uSize);
+UINT16 midiOutShortMsg(HMIDIOUT16 hMidiOut, DWORD dwMsg);
+UINT16 midiOutLongMsg(HMIDIOUT16 hMidiOut,
+    MIDIHDR * lpMidiOutHdr, UINT16 uSize);
+UINT16 midiOutReset(HMIDIOUT16 hMidiOut);
+UINT16 midiOutCachePatches(HMIDIOUT16 hMidiOut,
+    UINT16 uBank, WORD * lpwPatchArray, UINT16 uFlags);
+UINT16 midiOutCacheDrumPatches(HMIDIOUT16 hMidiOut,
+    UINT16 uPatch, WORD * lpwKeyArray, UINT16 uFlags);
+UINT16 midiOutGetID(HMIDIOUT16 hMidiOut, UINT16 * lpuDeviceID);
 
-DWORD midiOutMessage(HMIDIOUT16 hMidiOut, UINT uMessage, DWORD dw1, DWORD dw2);
+DWORD midiOutMessage(HMIDIOUT16 hMidiOut, UINT16 uMessage, DWORD dw1, DWORD dw2);
 
-UINT midiInGetNumDevs(void);
-UINT midiInGetDevCaps(UINT uDeviceID,
-    LPMIDIINCAPS lpCaps, UINT uSize);
-UINT midiInGetErrorText(UINT uError, LPSTR lpText, UINT uSize);
-UINT midiInOpen(HMIDIIN16 * lphMidiIn, UINT uDeviceID,
+UINT16 midiInGetNumDevs(void);
+UINT16 midiInGetDevCaps(UINT16 uDeviceID,
+    LPMIDIINCAPS lpCaps, UINT16 uSize);
+UINT16 midiInGetErrorText(UINT16 uError, LPSTR lpText, UINT16 uSize);
+UINT16 midiInOpen(HMIDIIN16 * lphMidiIn, UINT16 uDeviceID,
     DWORD dwCallback, DWORD dwInstance, DWORD dwFlags);
-UINT midiInClose(HMIDIIN16 hMidiIn);
-UINT midiInPrepareHeader(HMIDIIN16 hMidiIn,
-    MIDIHDR * lpMidiInHdr, UINT uSize);
-UINT midiInUnprepareHeader(HMIDIIN16 hMidiIn,
-    MIDIHDR * lpMidiInHdr, UINT uSize);
-UINT midiInAddBuffer(HMIDIIN16 hMidiIn,
-    MIDIHDR * lpMidiInHdr, UINT uSize);
-UINT midiInStart(HMIDIIN16 hMidiIn);
-UINT midiInStop(HMIDIIN16 hMidiIn);
-UINT midiInReset(HMIDIIN16 hMidiIn);
-UINT midiInGetID(HMIDIIN16 hMidiIn, UINT * lpuDeviceID);
+UINT16 midiInClose(HMIDIIN16 hMidiIn);
+UINT16 midiInPrepareHeader(HMIDIIN16 hMidiIn,
+    MIDIHDR * lpMidiInHdr, UINT16 uSize);
+UINT16 midiInUnprepareHeader(HMIDIIN16 hMidiIn,
+    MIDIHDR * lpMidiInHdr, UINT16 uSize);
+UINT16 midiInAddBuffer(HMIDIIN16 hMidiIn,
+    MIDIHDR * lpMidiInHdr, UINT16 uSize);
+UINT16 midiInStart(HMIDIIN16 hMidiIn);
+UINT16 midiInStop(HMIDIIN16 hMidiIn);
+UINT16 midiInReset(HMIDIIN16 hMidiIn);
+UINT16 midiInGetID(HMIDIIN16 hMidiIn, UINT16 * lpuDeviceID);
 
-DWORD midiInMessage(HMIDIIN16 hMidiIn, UINT uMessage, DWORD dw1, DWORD dw2);
+DWORD midiInMessage(HMIDIIN16 hMidiIn, UINT16 uMessage, DWORD dw1, DWORD dw2);
 
 #define AUX_MAPPER     (-1)
 
 typedef struct {
-    UINT    wMid;                  /* manufacturer ID */
-    UINT    wPid;                  /* product ID */
+    UINT16    wMid;                  /* manufacturer ID */
+    UINT16    wPid;                  /* product ID */
     VERSION vDriverVersion;        /* version of the driver */
     char    szPname[MAXPNAMELEN];  /* product name (NULL terminated string) */
-    UINT    wTechnology;           /* type of device */
+    UINT16    wTechnology;           /* type of device */
     DWORD   dwSupport;             /* functionality supported by driver */
 } AUXCAPS, *LPAUXCAPS;
 
@@ -432,35 +432,35 @@
 #define AUXCAPS_VOLUME          0x0001  /* supports volume control */
 #define AUXCAPS_LRVOLUME        0x0002  /* separate left-right volume control */
 
-UINT auxGetNumDevs(void);
-UINT auxGetDevCaps(UINT uDeviceID, AUXCAPS * lpCaps, UINT uSize);
-UINT auxSetVolume(UINT uDeviceID, DWORD dwVolume);
-UINT auxGetVolume(UINT uDeviceID, DWORD * lpdwVolume);
+UINT16 auxGetNumDevs(void);
+UINT16 auxGetDevCaps(UINT16 uDeviceID, AUXCAPS * lpCaps, UINT16 uSize);
+UINT16 auxSetVolume(UINT16 uDeviceID, DWORD dwVolume);
+UINT16 auxGetVolume(UINT16 uDeviceID, DWORD * lpdwVolume);
 
-DWORD auxOutMessage(UINT uDeviceID, UINT uMessage, DWORD dw1, DWORD dw2);
+DWORD auxOutMessage(UINT16 uDeviceID, UINT16 uMessage, DWORD dw1, DWORD dw2);
 
 #define TIMERR_NOERROR        (0)                  /* no error */
 #define TIMERR_NOCANDO        (TIMERR_BASE+1)      /* request not completed */
 #define TIMERR_STRUCT         (TIMERR_BASE+33)     /* time struct size */
 
-typedef void (*LPTIMECALLBACK) (UINT uTimerID, UINT uMessage, DWORD dwUser, DWORD dw1, DWORD dw2);
+typedef void (*LPTIMECALLBACK) (UINT16 uTimerID, UINT16 uMessage, DWORD dwUser, DWORD dw1, DWORD dw2);
 
 #define TIME_ONESHOT    0   /* program timer for single event */
 #define TIME_PERIODIC   1   /* program for continuous periodic event */
 
 typedef struct {
-    UINT    wPeriodMin;     /* minimum period supported  */
-    UINT    wPeriodMax;     /* maximum period supported  */
+    UINT16    wPeriodMin;     /* minimum period supported  */
+    UINT16    wPeriodMax;     /* maximum period supported  */
 } TIMECAPS, *LPTIMECAPS;
 
-UINT timeGetSystemTime(MMTIME * lpTime, UINT uSize);
+UINT16 timeGetSystemTime(MMTIME * lpTime, UINT16 uSize);
 DWORD timeGetTime(void);
-UINT timeSetEvent(UINT uDelay, UINT uResolution,
-    LPTIMECALLBACK lpFunction, DWORD dwUser, UINT uFlags);
-UINT timeKillEvent(UINT uTimerID);
-UINT timeGetDevCaps(TIMECAPS * lpTimeCaps, UINT uSize);
-UINT timeBeginPeriod(UINT uPeriod);
-UINT timeEndPeriod(UINT uPeriod);
+UINT16 timeSetEvent(UINT16 uDelay, UINT16 uResolution,
+    LPTIMECALLBACK lpFunction, DWORD dwUser, UINT16 uFlags);
+UINT16 timeKillEvent(UINT16 uTimerID);
+UINT16 timeGetDevCaps(TIMECAPS * lpTimeCaps, UINT16 uSize);
+UINT16 timeBeginPeriod(UINT16 uPeriod);
+UINT16 timeEndPeriod(UINT16 uPeriod);
 
 #define JOYERR_NOERROR        (0)                  /* no error */
 #define JOYERR_PARMS          (JOYERR_BASE+5)      /* bad parameters */
@@ -480,35 +480,35 @@
 #define JOYSTICKID2         1
 
 typedef struct {
-    UINT wMid;                  /* manufacturer ID */
-    UINT wPid;                  /* product ID */
+    UINT16 wMid;                  /* manufacturer ID */
+    UINT16 wPid;                  /* product ID */
     char szPname[MAXPNAMELEN];  /* product name (NULL terminated string) */
-    UINT wXmin;                 /* minimum x position value */
-    UINT wXmax;                 /* maximum x position value */
-    UINT wYmin;                 /* minimum y position value */
-    UINT wYmax;                 /* maximum y position value */
-    UINT wZmin;                 /* minimum z position value */
-    UINT wZmax;                 /* maximum z position value */
-    UINT wNumButtons;           /* number of buttons */
-    UINT wPeriodMin;            /* minimum message period when captured */
-    UINT wPeriodMax;            /* maximum message period when captured */
+    UINT16 wXmin;                 /* minimum x position value */
+    UINT16 wXmax;                 /* maximum x position value */
+    UINT16 wYmin;                 /* minimum y position value */
+    UINT16 wYmax;                 /* maximum y position value */
+    UINT16 wZmin;                 /* minimum z position value */
+    UINT16 wZmax;                 /* maximum z position value */
+    UINT16 wNumButtons;           /* number of buttons */
+    UINT16 wPeriodMin;            /* minimum message period when captured */
+    UINT16 wPeriodMax;            /* maximum message period when captured */
 } JOYCAPS, *LPJOYCAPS;
 
 typedef struct {
-    UINT wXpos;                 /* x position */
-    UINT wYpos;                 /* y position */
-    UINT wZpos;                 /* z position */
-    UINT wButtons;              /* button states */
+    UINT16 wXpos;                 /* x position */
+    UINT16 wYpos;                 /* y position */
+    UINT16 wZpos;                 /* z position */
+    UINT16 wButtons;              /* button states */
 } JOYINFO, *LPJOYINFO;
 
-UINT joyGetDevCaps(UINT uJoyID, JOYCAPS * lpCaps, UINT uSize);
-UINT joyGetNumDevs(void);
-UINT joyGetPos(UINT uJoyID, JOYINFO * lpInfo);
-UINT joyGetThreshold(UINT uJoyID, UINT * lpuThreshold);
-UINT joyReleaseCapture(UINT uJoyID);
-UINT joySetCapture(HWND16 hwnd, UINT uJoyID, UINT uPeriod,
-    BOOL bChanged);
-UINT joySetThreshold(UINT uJoyID, UINT uThreshold);
+UINT16 joyGetDevCaps(UINT16 uJoyID, JOYCAPS * lpCaps, UINT16 uSize);
+UINT16 joyGetNumDevs(void);
+UINT16 joyGetPos(UINT16 uJoyID, JOYINFO * lpInfo);
+UINT16 joyGetThreshold(UINT16 uJoyID, UINT16 * lpuThreshold);
+UINT16 joyReleaseCapture(UINT16 uJoyID);
+UINT16 joySetCapture(HWND16 hwnd, UINT16 uJoyID, UINT16 uPeriod,
+    BOOL16 bChanged);
+UINT16 joySetThreshold(UINT16 uJoyID, UINT16 uThreshold);
 
 #define MMIOERR_BASE            256
 #define MMIOERR_FILENOTFOUND    (MMIOERR_BASE + 1)  /* file not found */
@@ -525,14 +525,14 @@
 #define CFSEPCHAR       '+'             /* compound file name separator char. */
 
 typedef DWORD           FOURCC;         /* a four character code */
-typedef LONG (*LPMMIOPROC)(LPSTR lpmmioinfo, UINT uMessage,
+typedef LONG (*LPMMIOPROC)(LPSTR lpmmioinfo, UINT16 uMessage,
             LPARAM lParam1, LPARAM lParam2);
 
 typedef struct {
         DWORD           dwFlags;        /* general status flags */
         FOURCC          fccIOProc;      /* pointer to I/O procedure */
         LPMMIOPROC      pIOProc;        /* pointer to I/O procedure */
-        UINT            wErrorRet;      /* place for error to be returned */
+        UINT16            wErrorRet;      /* place for error to be returned */
         HTASK16         htask;          /* alternate local task */
         /* fields maintained by MMIO functions during buffered I/O */
         LONG            cchBuffer;      /* size of I/O buffer (or 0L) */
@@ -621,48 +621,48 @@
                 ( (DWORD)(BYTE)(ch0) | ( (DWORD)(BYTE)(ch1) << 8 ) |    \
                 ( (DWORD)(BYTE)(ch2) << 16 ) | ( (DWORD)(BYTE)(ch3) << 24 ) )
 
-FOURCC mmioStringToFOURCC(LPCSTR sz, UINT uFlags);
+FOURCC mmioStringToFOURCC(LPCSTR sz, UINT16 uFlags);
 LPMMIOPROC mmioInstallIOProc(FOURCC fccIOProc, LPMMIOPROC pIOProc,
     DWORD dwFlags);
 HMMIO16 mmioOpen(LPSTR szFileName, MMIOINFO * lpmmioinfo,
     DWORD dwOpenFlags);
 
-UINT mmioRename(LPCSTR szFileName, LPCSTR szNewFileName,
+UINT16 mmioRename(LPCSTR szFileName, LPCSTR szNewFileName,
      MMIOINFO * lpmmioinfo, DWORD dwRenameFlags);
 
-UINT mmioClose(HMMIO16 hmmio, UINT uFlags);
+UINT16 mmioClose(HMMIO16 hmmio, UINT16 uFlags);
 LONG mmioRead(HMMIO16 hmmio, HPSTR pch, LONG cch);
 LONG mmioWrite(HMMIO16 hmmio, HPCSTR pch, LONG cch);
 LONG mmioSeek(HMMIO16 hmmio, LONG lOffset, int iOrigin);
-UINT mmioGetInfo(HMMIO16 hmmio, MMIOINFO * lpmmioinfo, UINT uFlags);
-UINT mmioSetInfo(HMMIO16 hmmio, const MMIOINFO * lpmmioinfo, UINT uFlags);
-UINT mmioSetBuffer(HMMIO16 hmmio, LPSTR pchBuffer, LONG cchBuffer,
-    UINT uFlags);
-UINT mmioFlush(HMMIO16 hmmio, UINT uFlags);
-UINT mmioAdvance(HMMIO16 hmmio, MMIOINFO * lpmmioinfo, UINT uFlags);
-LONG mmioSendMessage(HMMIO16 hmmio, UINT uMessage,
+UINT16 mmioGetInfo(HMMIO16 hmmio, MMIOINFO * lpmmioinfo, UINT16 uFlags);
+UINT16 mmioSetInfo(HMMIO16 hmmio, const MMIOINFO * lpmmioinfo, UINT16 uFlags);
+UINT16 mmioSetBuffer(HMMIO16 hmmio, LPSTR pchBuffer, LONG cchBuffer,
+    UINT16 uFlags);
+UINT16 mmioFlush(HMMIO16 hmmio, UINT16 uFlags);
+UINT16 mmioAdvance(HMMIO16 hmmio, MMIOINFO * lpmmioinfo, UINT16 uFlags);
+LONG mmioSendMessage(HMMIO16 hmmio, UINT16 uMessage,
     LPARAM lParam1, LPARAM lParam2);
-UINT mmioDescend(HMMIO16 hmmio, MMCKINFO * lpck,
-    const MMCKINFO * lpckParent, UINT uFlags);
-UINT mmioAscend(HMMIO16 hmmio, MMCKINFO * lpck, UINT uFlags);
-UINT mmioCreateChunk(HMMIO16 hmmio, MMCKINFO * lpck, UINT uFlags);
+UINT16 mmioDescend(HMMIO16 hmmio, MMCKINFO * lpck,
+    const MMCKINFO * lpckParent, UINT16 uFlags);
+UINT16 mmioAscend(HMMIO16 hmmio, MMCKINFO * lpck, UINT16 uFlags);
+UINT16 mmioCreateChunk(HMMIO16 hmmio, MMCKINFO * lpck, UINT16 uFlags);
 
-typedef UINT (*YIELDPROC) (UINT uDeviceID, DWORD dwYieldData);
+typedef UINT16 (*YIELDPROC) (UINT16 uDeviceID, DWORD dwYieldData);
 
-DWORD mciSendCommand (UINT uDeviceID, UINT uMessage,
+DWORD mciSendCommand (UINT16 uDeviceID, UINT16 uMessage,
     DWORD dwParam1, DWORD dwParam2);
 DWORD mciSendString (LPCSTR lpstrCommand,
-    LPSTR lpstrReturnString, UINT uReturnLength, HWND16 hwndCallback);
-UINT mciGetDeviceID (LPCSTR lpstrName);
-UINT mciGetDeviceIDFromElementID (DWORD dwElementID,
+    LPSTR lpstrReturnString, UINT16 uReturnLength, HWND16 hwndCallback);
+UINT16 mciGetDeviceID (LPCSTR lpstrName);
+UINT16 mciGetDeviceIDFromElementID (DWORD dwElementID,
     LPCSTR lpstrType);
-BOOL mciGetErrorString (DWORD wError, LPSTR lpstrBuffer,
-    UINT uLength);
-BOOL mciSetYieldProc (UINT uDeviceID, YIELDPROC fpYieldProc,
+BOOL16 mciGetErrorString (DWORD wError, LPSTR lpstrBuffer,
+    UINT16 uLength);
+BOOL16 mciSetYieldProc (UINT16 uDeviceID, YIELDPROC fpYieldProc,
     DWORD dwYieldData);
 
-HTASK16 mciGetCreatorTask(UINT uDeviceID);
-YIELDPROC mciGetYieldProc (UINT uDeviceID, DWORD * lpdwYieldData);
+HTASK16 mciGetCreatorTask(UINT16 uDeviceID);
+YIELDPROC mciGetYieldProc (UINT16 uDeviceID, DWORD * lpdwYieldData);
 
 #define MCIERR_INVALID_DEVICE_ID        (MCIERR_BASE + 1)
 #define MCIERR_UNRECOGNIZED_KEYWORD     (MCIERR_BASE + 3)
@@ -928,11 +928,11 @@
 
 typedef struct {
 	DWORD   dwCallback;
-	UINT    wDeviceID;
-	UINT    wReserved0;
-	LPCSTR  lpstrDeviceType;
-	LPCSTR  lpstrElementName;
-	LPCSTR  lpstrAlias;
+	UINT16  wDeviceID;
+	UINT16  wReserved0;
+	SEGPTR  lpstrDeviceType;
+	SEGPTR  lpstrElementName;
+	SEGPTR  lpstrAlias;
 } MCI_OPEN_PARMS, *LPMCI_OPEN_PARMS;
 
 typedef struct {
@@ -970,8 +970,8 @@
 	LPSTR   lpstrReturn;
 	DWORD   dwRetSize;
 	DWORD   dwNumber;
-	UINT    wDeviceType;
-	UINT    wReserved0;
+	UINT16    wDeviceType;
+	UINT16    wReserved0;
 } MCI_SYSINFO_PARMS, *LPMCI_SYSINFO_PARMS;
 
 typedef struct {
@@ -983,9 +983,9 @@
 typedef struct {
 	DWORD   dwCallback;
 	int     nVirtKey;
-	UINT    wReserved0;
+	UINT16    wReserved0;
 	HWND16  hwndBreak;
-	UINT    wReserved1;
+	UINT16    wReserved1;
 } MCI_BREAK_PARMS, *LPMCI_BREAK_PARMS;
 
 typedef struct {
@@ -1092,11 +1092,11 @@
 
 typedef struct {
 	DWORD   dwCallback;
-	UINT    wDeviceID;
-	UINT    wReserved0;
-	LPCSTR  lpstrDeviceType;
-	LPCSTR  lpstrElementName;
-	LPCSTR  lpstrAlias;
+	UINT16  wDeviceID;
+	UINT16  wReserved0;
+	SEGPTR  lpstrDeviceType;
+	SEGPTR  lpstrElementName;
+	SEGPTR  lpstrAlias;
 	DWORD   dwBufferSeconds;
 } MCI_WAVE_OPEN_PARMS, *LPMCI_WAVE_OPEN_PARMS;
 
@@ -1110,20 +1110,20 @@
 	DWORD   dwCallback;
 	DWORD   dwTimeFormat;
 	DWORD   dwAudio;
-	UINT    wInput;
-	UINT    wReserved0;
-	UINT    wOutput;
-	UINT    wReserved1;
-	UINT    wFormatTag;
-	UINT    wReserved2;
-	UINT    nChannels;
-	UINT    wReserved3;
+	UINT16    wInput;
+	UINT16    wReserved0;
+	UINT16    wOutput;
+	UINT16    wReserved1;
+	UINT16    wFormatTag;
+	UINT16    wReserved2;
+	UINT16    nChannels;
+	UINT16    wReserved3;
 	DWORD   nSamplesPerSec;
 	DWORD   nAvgBytesPerSec;
-	UINT    nBlockAlign;
-	UINT    wReserved4;
-	UINT    wBitsPerSample;
-	UINT    wReserved5;
+	UINT16    nBlockAlign;
+	UINT16    wReserved4;
+	UINT16    wBitsPerSample;
+	UINT16    wReserved5;
 } MCI_WAVE_SET_PARMS, * LPMCI_WAVE_SET_PARMS;
 
 #define     MCI_SEQ_DIV_PPQN            (0 + MCI_SEQ_OFFSET)
@@ -1213,14 +1213,14 @@
 
 typedef struct {
 	DWORD   dwCallback;
-	UINT    wDeviceID;
-	UINT    wReserved0;
-	LPCSTR  lpstrDeviceType;
-	LPCSTR  lpstrElementName;
-	LPCSTR  lpstrAlias;
+	UINT16  wDeviceID;
+	UINT16  wReserved0;
+	SEGPTR  lpstrDeviceType;
+	SEGPTR  lpstrElementName;
+	SEGPTR  lpstrAlias;
 	DWORD   dwStyle;
 	HWND16  hWndParent;
-	UINT    wReserved1;
+	UINT16  wReserved1;
 } MCI_ANIM_OPEN_PARMS, *LPMCI_ANIM_OPEN_PARMS;
 
 typedef struct {
@@ -1238,9 +1238,9 @@
 typedef struct {
 	DWORD   dwCallback;
 	HWND16  hWnd;
-	UINT    wReserved1;
-	UINT    nCmdShow;
-	UINT    wReserved2;
+	UINT16    wReserved1;
+	UINT16    nCmdShow;
+	UINT16    wReserved2;
 	LPCSTR  lpstrText;
 } MCI_ANIM_WINDOW_PARMS, *LPMCI_ANIM_WINDOW_PARMS;
 
@@ -1293,22 +1293,22 @@
 
 typedef struct {
 	DWORD   dwCallback;
-	UINT    wDeviceID;
-	UINT    wReserved0;
+	UINT16    wDeviceID;
+	UINT16    wReserved0;
 	LPCSTR  lpstrDeviceType;
 	LPCSTR  lpstrElementName;
 	LPCSTR  lpstrAlias;
 	DWORD   dwStyle;
 	HWND16  hWndParent;
-	UINT    wReserved1;
+	UINT16    wReserved1;
 } MCI_OVLY_OPEN_PARMS, *LPMCI_OVLY_OPEN_PARMS;
 
 typedef struct {
 	DWORD   dwCallback;
 	HWND16  hWnd;
-	UINT    wReserved1;
-	UINT    nCmdShow;
-	UINT    wReserved2;
+	UINT16    wReserved1;
+	UINT16    nCmdShow;
+	UINT16    wReserved2;
 	LPCSTR  lpstrText;
 } MCI_OVLY_WINDOW_PARMS, *LPMCI_OVLY_WINDOW_PARMS;
 
@@ -1494,30 +1494,30 @@
 } MIDIOPENDESC, *LPMIDIOPENDESC;
 
 typedef struct {
-	UINT			wDelay;
-	UINT			wResolution;
+	UINT16			wDelay;
+	UINT16			wResolution;
 	LPTIMECALLBACK	lpFunction;
 	DWORD			dwUser;
-	UINT			wFlags;
+	UINT16			wFlags;
 } TIMEREVENT, *LPTIMEREVENT;
 
 typedef struct {
-	UINT    wDeviceID;				/* device ID */
+	UINT16    wDeviceID;				/* device ID */
 	LPSTR 	lpstrParams;			/* parameter string for entry in SYSTEM.INI */
-	UINT    wCustomCommandTable;	/* custom command table (0xFFFF if none) */
+	UINT16    wCustomCommandTable;	/* custom command table (0xFFFF if none) */
 									/* filled in by the driver */
-	UINT    wType;					/* driver type */
+	UINT16    wType;					/* driver type */
 									/* filled in by the driver */
 } MCI_OPEN_DRIVER_PARMS, * LPMCI_OPEN_DRIVER_PARMS;
 
-DWORD mciGetDriverData(UINT uDeviceID);
-BOOL  mciSetDriverData(UINT uDeviceID, DWORD dwData);
-UINT  mciDriverYield(UINT uDeviceID);
-BOOL  mciDriverNotify(HWND16 hwndCallback, UINT uDeviceID,
-    UINT uStatus);
-UINT  mciLoadCommandResource(HINSTANCE16 hInstance,
-    LPCSTR lpResName, UINT uType);
-BOOL  mciFreeCommandResource(UINT uTable);
+DWORD mciGetDriverData(UINT16 uDeviceID);
+BOOL16  mciSetDriverData(UINT16 uDeviceID, DWORD dwData);
+UINT16  mciDriverYield(UINT16 uDeviceID);
+BOOL16  mciDriverNotify(HWND16 hwndCallback, UINT16 uDeviceID,
+                        UINT16 uStatus);
+UINT16  mciLoadCommandResource(HINSTANCE16 hInstance,
+                               LPCSTR lpResName, UINT16 uType);
+BOOL16  mciFreeCommandResource(UINT16 uTable);
 
 #define DCB_NULL		0x0000
 #define DCB_WINDOW		0x0001			/* dwCallback is a HWND */
@@ -1526,8 +1526,8 @@
 #define DCB_TYPEMASK	0x0007
 #define DCB_NOSWITCH	0x0008			/* don't switch stacks for callback */
 
-BOOL DriverCallback(DWORD dwCallBack, UINT uFlags, HANDLE16 hDev, 
-		WORD wMsg, DWORD dwUser, DWORD dwParam1, DWORD dwParam2);
+BOOL16 DriverCallback(DWORD dwCallBack, UINT16 uFlags, HANDLE16 hDev, 
+                      WORD wMsg, DWORD dwUser, DWORD dwParam1, DWORD dwParam2);
 DWORD auxMessage(WORD wDevID, WORD wMsg, DWORD dwUser, 
 					DWORD dwParam1, DWORD dwParam2);
 DWORD midMessage(WORD wDevID, WORD wMsg, DWORD dwUser, 
diff --git a/include/module.h b/include/module.h
index 953cdfb..872b498 100644
--- a/include/module.h
+++ b/include/module.h
@@ -137,7 +137,7 @@
 extern void BUILTIN_PrintDLLs(void);
 
 /* ne_image.c */
-extern BOOL16 NE_LoadSegment( HMODULE16 hModule, WORD segnum );
+extern BOOL32 NE_LoadSegment( HMODULE16 hModule, WORD segnum );
 extern void NE_FixupPrologs( NE_MODULE *pModule );
 extern void NE_InitializeDLLs( HMODULE16 hModule );
 
diff --git a/include/ole.h b/include/ole.h
index fdff577..0692ee0 100644
--- a/include/ole.h
+++ b/include/ole.h
@@ -139,13 +139,13 @@
 } OLE_RELEASE_METHOD;
 
 typedef struct _OLETARGETDEVICE {
-	UINT	otdDeviceNameOffset;
-	UINT	otdDriverNameOffset;
-	UINT	otdPortNameOffset;
-	UINT	otdExtDevmodeOffset;
-	UINT	otdExtDevmodeSize;
-	UINT	otdEnvironmentOffset;
-	UINT	otdEnvironmentSize;
+	UINT16	otdDeviceNameOffset;
+	UINT16	otdDriverNameOffset;
+	UINT16	otdPortNameOffset;
+	UINT16	otdExtDevmodeOffset;
+	UINT16	otdExtDevmodeSize;
+	UINT16	otdEnvironmentOffset;
+	UINT16	otdEnvironmentSize;
 	BYTE	otdData[1];
 	/* ... */
 } OLETARGETDEVICE;
@@ -206,8 +206,8 @@
 typedef struct _OLEOBJECTVTBL {
         void *  	(*QueryProtocol)(LPOLEOBJECT,OLE_LPCSTR);
 	OLESTATUS	(*Release)(LPOLEOBJECT);
-	OLESTATUS	(*Show)(LPOLEOBJECT,BOOL);
-	OLESTATUS	(*DoVerb)(LPOLEOBJECT,UINT,BOOL,BOOL);
+	OLESTATUS	(*Show)(LPOLEOBJECT,BOOL16);
+	OLESTATUS	(*DoVerb)(LPOLEOBJECT,UINT16,BOOL16,BOOL16);
 	OLESTATUS	(*GetData)(LPOLEOBJECT,OLECLIPFORMAT,HANDLE16 *);
 	OLESTATUS	(*SetData)(LPOLEOBJECT,OLECLIPFORMAT,HANDLE16);
 	OLESTATUS	(*SetTargetDevice)(LPOLEOBJECT,HGLOBAL16);
@@ -222,8 +222,8 @@
 	OLESTATUS	(*Equal)(LPOLEOBJECT,LPOLEOBJECT);
 	OLESTATUS	(*CopyToClipBoard)(LPOLEOBJECT);
 	OLESTATUS	(*Draw)(LPOLEOBJECT,HDC16,LPRECT16,LPRECT16,HDC16);
-	OLESTATUS	(*Activate)(LPOLEOBJECT,UINT,BOOL,BOOL,HWND16,LPRECT16);
-	OLESTATUS	(*Execute)(LPOLEOBJECT,HGLOBAL16,UINT);
+	OLESTATUS	(*Activate)(LPOLEOBJECT,UINT16,BOOL16,BOOL16,HWND16,LPRECT16);
+	OLESTATUS	(*Execute)(LPOLEOBJECT,HGLOBAL16,UINT16);
 	OLESTATUS	(*Close)(LPOLEOBJECT);
 	OLESTATUS	(*Update)(LPOLEOBJECT);
 	OLESTATUS	(*Reconnect)(LPOLEOBJECT);
@@ -241,7 +241,7 @@
 	OLESTATUS	(*QueryReleaseError)(LPOLEOBJECT);
 	OLE_RELEASE_METHOD (*QueryReleaseMethod)(LPOLEOBJECT);
 	OLESTATUS	(*RequestData)(LPOLEOBJECT,OLECLIPFORMAT);
-	OLESTATUS	(*ObjectLong)(LPOLEOBJECT,UINT,LPLONG);
+	OLESTATUS	(*ObjectLong)(LPOLEOBJECT,UINT16,LPLONG);
 } OLEOBJECTVTBL;
 typedef OLEOBJECTVTBL*	LPOLEOBJECTVTBL;
 
@@ -251,7 +251,7 @@
 
 
 OLESTATUS OleRegisterServer(LPCSTR,LPOLESERVER,LHSERVER *,HINSTANCE16,OLE_SERVER_USE);
-OLESTATUS OleUnblockServer(LHSERVER,BOOL *);
+OLESTATUS OleUnblockServer(LHSERVER,BOOL16 *);
 OLESTATUS OleRegisterServerDoc(LHSERVER,LPCSTR,LPOLESERVERDOC,LHSERVERDOC *);
 OLESTATUS OleRegisterClientDoc(LPCSTR,LPCSTR,LONG,LHCLIENTDOC *);
 OLESTATUS OleRenameClientDoc(LHCLIENTDOC,LPCSTR);
diff --git a/include/options.h b/include/options.h
index 421f3e6..3f051d6 100644
--- a/include/options.h
+++ b/include/options.h
@@ -23,7 +23,8 @@
     LANG_Eo,  /* Esperanto */
     LANG_It,  /* Italian */
     LANG_Ko,  /* Korean */
-    LANG_Hu   /* Hungarian */
+    LANG_Hu,  /* Hungarian */
+    LANG_Pl   /* Polish */
 } WINE_LANGUAGE;
 
 typedef struct
diff --git a/include/peexe.h b/include/peexe.h
index c75450c..d60affc 100644
--- a/include/peexe.h
+++ b/include/peexe.h
@@ -4,6 +4,7 @@
 #ifndef __WINE_PEEXE_H
 #define __WINE_PEEXE_H
 
+#include "wintypes.h"
 
 typedef struct _IMAGE_FILE_HEADER {
 	WORD	Machine;
diff --git a/include/selectors.h b/include/selectors.h
index 673a2f5..cbb00ee 100644
--- a/include/selectors.h
+++ b/include/selectors.h
@@ -18,38 +18,24 @@
                                    BOOL32 readonly );
 extern void SELECTOR_FreeBlock( WORD sel, WORD count );
 
-#ifndef WINELIB
-
-#ifdef linux
-#define WINE_DATA_SELECTOR 0x2b
-#define WINE_CODE_SELECTOR 0x23
-#endif  /* linux */
-
-#ifdef __NetBSD__
-#define WINE_DATA_SELECTOR 0x1f
-#define WINE_CODE_SELECTOR 0x17
-#endif  /* NetBSD */
-
-#ifdef __FreeBSD__
-#define WINE_DATA_SELECTOR 0x27
-#define WINE_CODE_SELECTOR 0x1f
-#endif  /* FreeBSD */
-
-#if defined(__svr4__) || defined(_SCO_DS)
-#define WINE_DATA_SELECTOR 0x1f
-#define WINE_CODE_SELECTOR 0x17
-#endif  /* svr4 || SCO_DS */
-
-#ifdef __EMX__ /* Is this always true? */
-#define WINE_DATA_SELECTOR 0x53
-#define WINE_CODE_SELECTOR 0x5b
-#endif  /* OS/2 */
-
-#else  /* WINELIB */
-
-#define WINE_DATA_SELECTOR 0x00
-#define WINE_CODE_SELECTOR 0x00
-
-#endif  /* WINELIB */
+#if defined(linux)
+# define WINE_DATA_SELECTOR 0x2b
+# define WINE_CODE_SELECTOR 0x23
+#elif defined(__NetBSD__)
+# define WINE_DATA_SELECTOR 0x1f
+# define WINE_CODE_SELECTOR 0x17
+#elif defined(__FreeBSD__)
+# define WINE_DATA_SELECTOR 0x27
+# define WINE_CODE_SELECTOR 0x1f
+#elif defined(__svr4__) || defined(_SCO_DS)
+# define WINE_DATA_SELECTOR 0x1f
+# define WINE_CODE_SELECTOR 0x17
+#elif defined(__EMX__)
+# define WINE_DATA_SELECTOR 0x53 /* Is this always true? */
+# define WINE_CODE_SELECTOR 0x5b
+#else
+# define WINE_DATA_SELECTOR 0x00
+# define WINE_CODE_SELECTOR 0x00
+#endif
 
 #endif /* __WINE_SELECTORS_H */
diff --git a/include/static.h b/include/static.h
index c664cc4..45a8fff 100644
--- a/include/static.h
+++ b/include/static.h
@@ -17,6 +17,7 @@
     HICON16  hIcon;   /* Icon handle for SS_ICON controls */ 
 } STATICINFO;
 
-extern LRESULT StaticWndProc(HWND16 hWnd,UINT uMsg,WPARAM16 wParam,LPARAM lParam );
+extern LRESULT StaticWndProc( HWND16 hWnd, UINT16 uMsg, WPARAM16 wParam,
+                              LPARAM lParam );
 
 #endif  /* __WINE_STATIC_H */
diff --git a/include/stddebug.h b/include/stddebug.h
index d09f25d..46c012c 100644
--- a/include/stddebug.h
+++ b/include/stddebug.h
@@ -148,6 +148,7 @@
 #undef DEBUG_TIMER
 #undef DEBUG_TOOLHELP
 #undef DEBUG_VER
+#undef DEBUG_VIRTUAL
 #undef DEBUG_VXD
 #undef DEBUG_WIN
 #undef DEBUG_WIN16DRV
@@ -228,6 +229,7 @@
 #define DEBUG_TIMER
 #define DEBUG_TOOLHELP
 #define DEBUG_VER
+#define DEBUG_VIRTUAL
 #define DEBUG_VXD
 #define DEBUG_WIN
 #define DEBUG_WIN16DRV
diff --git a/include/stress.h b/include/stress.h
index 0d1ef93..86f718c 100644
--- a/include/stress.h
+++ b/include/stress.h
@@ -11,16 +11,16 @@
 #define EDS_CUR		2
 #define EDS_TEMP	3
 
-BOOL	AllocGDIMem(UINT);
-BOOL	AllocMem(DWORD);
-BOOL	AllocUserMem(UINT);
-int	AllocDiskSpace(long, UINT);
+BOOL16	AllocGDIMem(UINT16);
+BOOL16	AllocMem(DWORD);
+BOOL16	AllocUserMem(UINT16);
+int	AllocDiskSpace(long, UINT16);
 int	AllocFileHandles(int);
 int	GetFreeFileHandles(void);
 void	FreeAllGDIMem(void);
 void	FreeAllMem(void);
 void	FreeAllUserMem(void);
-void	UnAllocDiskSpace(UINT);
+void	UnAllocDiskSpace(UINT16);
 void	UnAllocFileHandles(void);
 
 #ifdef __cplusplus
diff --git a/include/toolhelp.h b/include/toolhelp.h
index dbebe81..fbf21a8 100644
--- a/include/toolhelp.h
+++ b/include/toolhelp.h
@@ -8,6 +8,8 @@
 #define MAX_PATH	255
 #define MAX_CLASSNAME	255
 
+#pragma pack(1)
+
 /* Global heap */
 
 typedef struct
@@ -343,4 +345,7 @@
     FARPROC16   lpfnErrorAddr;
     void      **lpBadParam;
 } NFYLOGPARAMERROR;
+
+#pragma pack(4)
+
 #endif /* __WINE_TOOLHELP_H */
diff --git a/include/w32sys.h b/include/w32sys.h
index 6388b6c..94c8d29 100644
--- a/include/w32sys.h
+++ b/include/w32sys.h
@@ -8,10 +8,10 @@
 #define __WINE__W32SYS_H
 
 typedef struct _WIN32SINFO {
-    BYTE bMajor;
-    BYTE bMinor;
-    WORD wBuildNumber;
-    BOOL fDebug;
+    BYTE   bMajor;
+    BYTE   bMinor;
+    WORD   wBuildNumber;
+    BOOL16 fDebug;
 } WIN32SINFO, *LPWIN32SINFO;
 
 #endif /* __WINE_W32SYS_H */
diff --git a/include/win16drv.h b/include/win16drv.h
index c6d7349..6b2c8a8 100644
--- a/include/win16drv.h
+++ b/include/win16drv.h
@@ -161,4 +161,7 @@
 extern BOOL32 WIN16DRV_ExtTextOut( DC *dc, INT32 x, INT32 y, UINT32 flags,
                                   const RECT32 *lprect, LPCSTR str, UINT32 count,
                                   const INT32 *lpDx );
+extern HGDIOBJ32 WIN16DRV_SelectObject( DC *dc, HGDIOBJ32 handle );
+
+
 #endif  /* __WINE_WIN16DRV_H */
diff --git a/include/winbase.h b/include/winbase.h
index 45ce754..ed071eb 100644
--- a/include/winbase.h
+++ b/include/winbase.h
@@ -29,6 +29,10 @@
 #define MEM_MAPPED              0x00040000
 #define MEM_TOP_DOWN            0x00100000
 
+#define FILE_BEGIN              0
+#define FILE_CURRENT            1
+#define FILE_END                2
+
 #define FILE_CASE_SENSITIVE_SEARCH      0x00000001
 #define FILE_CASE_PRESERVED_NAMES       0x00000002
 #define FILE_UNICODE_ON_DISK            0x00000004
diff --git a/include/windows.h b/include/windows.h
index 3bc9505..6448f63 100644
--- a/include/windows.h
+++ b/include/windows.h
@@ -1426,6 +1426,45 @@
 #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
 {
@@ -1447,9 +1486,9 @@
   /* Rasterizer status */
 typedef struct
 {
-    WORD nSize;
-    WORD wFlags;
-    WORD nLanguageID;
+    INT16 nSize;
+    INT16 wFlags;
+    INT16 nLanguageID;
 } RASTERIZER_STATUS, *LPRASTERIZER_STATUS;
 
 #define TT_AVAILABLE        0x0001
@@ -1716,8 +1755,41 @@
 #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           43
+#define SM_CMETRICS           75
 
   /* Device-independent bitmaps */
 
@@ -2232,6 +2304,7 @@
 #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)))
@@ -4659,6 +4732,52 @@
 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 */
@@ -4704,6 +4823,7 @@
 HDC16      GetDCState(HDC16);
 HWND16     GetDesktopHwnd(void);
 SEGPTR     GetDOSEnvironment(void);
+INT16      GetEnvironment(LPCSTR,LPSTR,UINT16);
 HMODULE16  GetExePtr(HANDLE16);
 WORD       GetExeVersion(void);
 DWORD      GetHeapSpaces(HMODULE16);
@@ -4711,6 +4831,7 @@
 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);
@@ -4770,6 +4891,7 @@
 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);
@@ -4878,6 +5000,9 @@
 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);
@@ -4899,13 +5024,17 @@
 BOOL32     IsWindowUnicode(HWND32);
 BOOL32     IsValidLocale(DWORD,DWORD);
 BOOL32     LocalFileTimeToFileTime(const FILETIME*,LPFILETIME);
-LPVOID     MapViewOfFileEx(HANDLE32,DWORD,DWORD,DWORD,DWORD,DWORD);
+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)
@@ -4962,8 +5091,15 @@
 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)
@@ -4973,15 +5109,6 @@
 /* Declarations for functions that are the same in Win16 and Win32 */
 
 VOID       CloseSound(VOID);
-HBITMAP16  CreateBitmap(INT32,INT32,UINT32,UINT32,LPCVOID);
-BOOL16     CreateCaret(HWND32,HBITMAP32,INT32,INT32);
-HBITMAP16  CreateCompatibleBitmap(HDC32,INT32,INT32);
-HBITMAP16  CreateDiscardableBitmap(HDC32,INT32,INT32);
-BOOL16     DestroyCaret(void);
-INT16      ExcludeUpdateRgn(HDC32,HWND32);
-DWORD      GetAppCompatFlags(HTASK32);
-LONG       GetBitmapBits(HBITMAP32,LONG,LPVOID);
-WORD       GetClassWord(HWND32,INT32);
 DWORD      GetDialogBaseUnits(void);
 VOID       GetKeyboardState(LPBYTE);
 DWORD      GetLastError(void);
@@ -4990,28 +5117,17 @@
 DWORD      GetMessagePos(void);
 LONG       GetMessageTime(void);
 DWORD      GetTickCount(void);
-INT16      GetUpdateRgn(HWND32,HRGN32,BOOL32);
-WORD       GetWindowWord(HWND32,INT32);
 ATOM       GlobalDeleteAtom(ATOM);
-BOOL16     IsWindow(HWND32);
 VOID       LZDone(void);
 DWORD      OemKeyScan(WORD);
 DWORD      RegCloseKey(HKEY);
 DWORD      RegFlushKey(HKEY);
 VOID       ReleaseCapture(void);
-LONG       SetBitmapBits(HBITMAP32,LONG,LPCVOID);
-COLORREF   SetBkColor(HDC32,COLORREF);
-BOOL16     SetCaretBlinkTime(UINT32);
-BOOL16     SetCaretPos(INT32,INT32);
-WORD       SetClassWord(HWND32,INT32,WORD);
 VOID       SetKeyboardState(LPBYTE);
 VOID       SetLastError(DWORD);
-VOID       SetRectRgn(HRGN32,INT32,INT32,INT32,INT32);
-COLORREF   SetTextColor(HDC32,COLORREF);
-WORD       SetWindowWord(HWND32,INT32,WORD);
-VOID       UpdateWindow(HWND32);
 VOID       WaitMessage(VOID);
 
+
 /* Declarations for functions that change between Win16 and Win32 */
 
 INT16      AccessResource16(HINSTANCE16,HRSRC16);
@@ -5021,6 +5137,10 @@
 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)
@@ -5207,12 +5327,21 @@
 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)
@@ -5258,6 +5387,9 @@
 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)
@@ -5319,6 +5451,10 @@
 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)
@@ -5378,6 +5514,9 @@
 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)
@@ -5436,6 +5575,9 @@
 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)
@@ -5497,6 +5639,9 @@
 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)
@@ -5526,12 +5671,19 @@
 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*);
@@ -5553,6 +5705,10 @@
 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);
@@ -5585,6 +5741,9 @@
 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)
@@ -5597,6 +5756,9 @@
 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)
@@ -5604,6 +5766,9 @@
 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)
@@ -5649,9 +5814,19 @@
 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)
@@ -5747,6 +5922,10 @@
 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)
@@ -5756,6 +5935,10 @@
 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)
@@ -5791,6 +5974,10 @@
 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);
@@ -5799,6 +5986,10 @@
 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)
@@ -5833,6 +6024,9 @@
 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);
@@ -5856,6 +6050,12 @@
 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)
@@ -5880,6 +6080,10 @@
 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)
@@ -5952,6 +6156,9 @@
 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)
@@ -6001,6 +6208,9 @@
 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);
@@ -6059,7 +6269,7 @@
 BOOL32     GrayString32W(HDC32,HBRUSH32,GRAYSTRINGPROC32,LPARAM,
                          INT32,INT32,INT32,INT32,INT32);
 #define    GrayString WINELIB_NAME_AW(GrayString)
-BOOL16     HideCaret16(HWND16);
+VOID       HideCaret16(HWND16);
 BOOL32     HideCaret32(HWND32);
 #define    HideCaret WINELIB_NAME(HideCaret)
 BOOL16     HiliteMenuItem16(HWND16,HMENU16,UINT16,UINT16);
@@ -6103,7 +6313,7 @@
 BOOL32     IsBadHugeReadPtr32(LPCVOID,UINT32);
 #define    IsBadHugeReadPtr WINELIB_NAME(IsBadHugeReadPtr)
 BOOL16     IsBadHugeWritePtr16(SEGPTR,DWORD);
-BOOL32     IsBadHugeWritePtr32(LPCVOID,UINT32);
+BOOL32     IsBadHugeWritePtr32(LPVOID,UINT32);
 #define    IsBadHugeWritePtr WINELIB_NAME(IsBadHugeWritePtr)
 BOOL16     IsBadReadPtr16(SEGPTR,UINT16);
 BOOL32     IsBadReadPtr32(LPCVOID,UINT32);
@@ -6156,6 +6366,9 @@
 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)
@@ -6215,6 +6428,9 @@
 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)
@@ -6347,6 +6563,10 @@
 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)
@@ -6363,6 +6583,9 @@
 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)
@@ -6378,6 +6601,10 @@
 #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)
@@ -6464,17 +6691,24 @@
 INT16      ReleaseDC16(HWND16,HDC16);
 INT32      ReleaseDC32(HWND32,HDC32);
 #define    ReleaseDC WINELIB_NAME(ReleaseDC)
-HANDLE16   RemoveProp16(HWND16,LPCSTR);
-HANDLE32   RemoveProp32A(HWND32,LPCSTR);
-HANDLE32   RemoveProp32W(HWND32,LPCWSTR);
-#define    RemoveProp WINELIB_NAME_AW(RemoveProp)
 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 *);
@@ -6536,19 +6770,37 @@
 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)
@@ -6642,6 +6894,9 @@
 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)
@@ -6684,6 +6939,9 @@
 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)
@@ -6742,11 +7000,18 @@
 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)
-BOOL16     ShowCaret16(HWND16);
+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);
@@ -6838,8 +7103,14 @@
 BOOL32     UnregisterClass32A(LPCSTR,HINSTANCE32);
 BOOL32     UnregisterClass32W(LPCWSTR,HINSTANCE32);
 #define    UnregisterClass WINELIB_NAME_AW(UnregisterClass)
-void       ValidateRect16(HWND16,const RECT16*);
-void       ValidateRect32(HWND32,const RECT32*);
+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);
@@ -6963,6 +7234,7 @@
 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);
@@ -6972,65 +7244,6 @@
 LPWSTR     lstrcpynAtoW(LPWSTR,LPCSTR,INT32);
 LPSTR      lstrcpynWtoA(LPSTR,LPCWSTR,INT32);
 
-/* Library data types defined as a transition aid for the emulator. */
-/* These should _not_ be used in the emulator and will be removed someday. */
-
-#ifndef NO_TRANSITION_TYPES
-
-#ifdef __WINE__
-# ifdef WINELIB32
-typedef INT32 INT;
-typedef UINT32 UINT;
-typedef BOOL32 BOOL;
-# else  /* WINELIB32 */
-typedef INT16 INT;
-typedef UINT16 UINT;
-typedef BOOL16 BOOL;
-# endif  /* WINELIB32 */
-#endif  /* __WINE__ */
-
-INT        AddFontResource(LPCSTR);
-int        ConvertRequest(HWND16,LPKANJISTRUCT);
-DWORD      DragObject(HWND16, HWND16, WORD, HANDLE16, WORD, HCURSOR16);
-BOOL       EnumMetaFile(HDC16,HMETAFILE16,MFENUMPROC16,LPARAM);
-HICON16    ExtractIcon(HINSTANCE16,LPCSTR,WORD);
-HINSTANCE16 FindExecutable(LPCSTR,LPCSTR,LPSTR);
-void       FreeLibrary(HINSTANCE16);
-HANDLE16   GetClipboardData(WORD);
-int        GetClipboardFormatName(WORD,LPSTR,short);
-int        GetEnvironment(LPSTR,LPSTR,WORD);
-int        GetKerningPairs(HDC16,int,LPKERNINGPAIR16);
-BOOL       GetMessage(SEGPTR,HWND16,UINT,UINT);
-HMODULE16  GetModuleHandle(LPCSTR);
-INT16      GetModuleUsage(HINSTANCE16);
-int        GetPriorityClipboardFormat(WORD*,short);
-DWORD      GetQueueStatus(UINT);
-BOOL       GetRasterizerCaps(LPRASTERIZER_STATUS,UINT);
-HINSTANCE16 LoadModule(LPCSTR,LPVOID);
-void       OutputDebugString(LPCSTR);
-void       PlayMetaFileRecord(HDC16,LPHANDLETABLE16,LPMETARECORD,WORD);
-BOOL       PostMessage(HWND16,WORD,WORD,LONG);
-BOOL       RemoveFontResource(LPSTR);
-void       ReplyMessage(LRESULT);
-HANDLE16   SetClipboardData(WORD,HANDLE16);
-int        SetEnvironment(LPCSTR,LPCSTR,WORD);
-HINSTANCE16 ShellExecute(HWND16,LPCSTR,LPCSTR,LPSTR,LPCSTR,INT);
-int        UpdateColors(HDC16);
-
-/* Callback function pointers types. */
-
-#ifdef WINELIB
-typedef LONG (*DRIVERPROC)(DWORD, HDRVR16, UINT, LPARAM, LPARAM);
-typedef int (*EDITWORDBREAKPROC)(LPSTR lpch, int ichCurrent, int cch,int code);
-#else
-typedef SEGPTR DRIVERPROC;
-typedef SEGPTR EDITWORDBREAKPROC;
-#endif
-
-#endif  /* NO_TRANSITION_TYPES */
-
-#define WINELIB_UNIMP(x) fprintf (stderr, "WineLib: Unimplemented %s\n", x)
-
 #ifdef __cplusplus
 }
 #endif
diff --git a/include/winerror.h b/include/winerror.h
index 28cc005..75716bf 100644
--- a/include/winerror.h
+++ b/include/winerror.h
@@ -21,6 +21,7 @@
 #define ERROR_OUTOFMEMORY           14
 #define ERROR_NO_MORE_FILES         18
 #define ERROR_SHARING_VIOLATION     32
+#define ERROR_DUP_NAME              52
 #define ERROR_FILE_EXISTS           80
 #define ERROR_INVALID_PARAMETER     87
 #define ERROR_BROKEN_PIPE           109
@@ -29,6 +30,7 @@
 #define ERROR_SEEK_ON_DEVICE        132
 #define ERROR_DIR_NOT_EMPTY         145
 #define ERROR_BUSY                  170
+#define ERROR_ALREADY_EXISTS        183
 #define ERROR_FILENAME_EXCED_RANGE  206
 #define ERROR_MORE_DATA             234
 #define ERROR_NO_MORE_ITEMS         259
diff --git a/include/winsock.h b/include/winsock.h
index 0dfe7a3..ed813b7 100644
--- a/include/winsock.h
+++ b/include/winsock.h
@@ -499,7 +499,7 @@
   struct __WSINFO*      prev,*next;
 
   unsigned		flags;
-  int			errno;
+  int			err;
   INT16			num_startup;
   INT16			num_async_rq;
   INT16			last_free;
diff --git a/include/wintypes.h b/include/wintypes.h
index c6b69ab..05d3869 100644
--- a/include/wintypes.h
+++ b/include/wintypes.h
@@ -168,6 +168,13 @@
 typedef LRESULT (*DLGPROC16)(HWND16,UINT16,WPARAM16,LPARAM);
 typedef LRESULT (*DLGPROC32)(HWND32,UINT32,WPARAM32,LPARAM);
 DECL_WINELIB_TYPE(DLGPROC);
+typedef LRESULT (*DRIVERPROC16)(DWORD,HDRVR16,UINT16,LPARAM,LPARAM);
+typedef LRESULT (*DRIVERPROC32)(DWORD,HDRVR32,UINT32,LPARAM,LPARAM);
+DECL_WINELIB_TYPE(DRIVERPROC);
+typedef INT16   (*EDITWORDBREAKPROC16)(LPSTR,INT16,INT16,INT16);
+typedef INT32   (*EDITWORDBREAKPROC32A)(LPSTR,INT32,INT32,INT32);
+typedef INT32   (*EDITWORDBREAKPROC32W)(LPWSTR,INT32,INT32,INT32);
+DECL_WINELIB_TYPE_AW(EDITWORDBREAKPROC);
 typedef LRESULT (*FARPROC16)();
 typedef LRESULT (*FARPROC32)();
 DECL_WINELIB_TYPE(FARPROC);