Release 960811

Sun Aug 11 13:00:20 1996  Alexandre Julliard  <julliard@lrc.epfl.ch>

	* [configure.in] [include/acconfig.h] [tools/build.c]
	Added check for underscore on external symbols.

	* [memory/selector.c] [memory/global.c]
	Fixed FreeSelector() to free only one selector.
	Added SELECTOR_FreeBlock() to free an array of selectors.

	* [objects/color.c]
	Fixed a bug in COLOR_ToLogical() that caused GetPixel() to fail on
	hi-color displays.

	* [tools/build.c] [if1632/crtdll.spec]
	Added 'extern' type, used for external variables or functions.

	* [windows/winpos.c]
	Allow de-activating a window in WINPOS_ChangeActiveWindow().

	* [windows/winproc.c]
	Added 32-to-16 translation for button messages.
	Fixed WINPROC_GetPtr() to avoid crashes on 32-bit procedures that
	happen to be valid SEGPTRs.

Sat Aug 10 18:22:25 1996  Albrecht Kleine  <kleine@ak.sax.de>

	* [windows/message.c]
	Removed a FIXME in MSG_PeekHardwareMsg(): produces correct 
	data for the JOURNALRECORD-hook (using EVENTMSG16 structure).

	* [if1632/gdi.spec] [include/windows.h] [objects/metafile.c]
	Introduced undocumented API function IsValidMetaFile(), plus a
 	minor fix in last patch of CopyMetaFile().

	* [objects/gdiobj.c]
	Removed a FIXME in IsGDIObject(): added magic word check.

Sun Aug 10 18:10:10 1996  Bruce Milner <Bruce.Milner@genetics.utah.edu>

	* [controls/statuswin.c]
	First pass at implementing the StatusWindow class.

	* [include/commctrl.h]
	Header file for common controls.

	* [controls/widgets.c]
	Added InitCommonControls().

	* [if1632/comctl32.spec]
	Add DrawStatusTextA, CreateStatusWindowA, InitCommonControls.

	* [win32/findfile.c] [if1632/kernel32.spec]
	Add FindNextFile32A, FindClose.
	Modified FindFirstFile32A so it works with FindNextFile32A.

	* [include/winbase.h]
	Fixed WIN32_FIND_DATA structure member names.

Sat Aug 10 09:00:00 1996  Alex Korobka <alex@phm30.pharm.sunysb.edu>

	* [windows/scroll.c]
	Changed scrolling routines to benefit from DCE code update.

Thu Aug  8 18:05:09 1996  Marcus Meissner <msmeissn@cip.informatik.uni-erlangen.de>

	* [files/file.c]
	SearchPath* could get NULL for lastpart argument.

	* [if1632/build-spec.txt] [documentation/debugging]
	Varargs documentation added, debugging hints updated.

	* [if1632/crtdll.spec][misc/crtdll.c][misc/Makefile.in]
	Started to implement CRTDLL.

	* [if1632/wsock32.spec]
	Some thunks to standard libc functions (structures have the same
 	elements, but perhaps wrong offset due to packing).

	* [include/kernel32.h][include/windows.h][win32/*.c][loader/main.c]
	Merged kernel32.h into windows.h.

	* [misc/lstr.c]
	Enhanced FormatMessage().

	* [misc/main.c] [if1632/kernel.spec] [include/windows.h]
	GetVersion() updated to new naming standard.
	Changed language handling to support language ids.

	* [misc/shell.c]
	Enhanced FindExecutable, so it finds files in the search path too.

	* [win32/environment.c]
	GetCommandLine* updated.

	* [loader/resource.c] [loader/pe_resource.c]
	FindResourceEx32* added.
	Loading of messagetables added.
	Language handling now uses Wine default language id.
diff --git a/include/acconfig.h b/include/acconfig.h
new file mode 100644
index 0000000..00d85cd
--- /dev/null
+++ b/include/acconfig.h
@@ -0,0 +1,7 @@
+/*
+ * This file is used by 'autoheader' to generate the list of symbols
+ * defined in the 'configure' script.
+ */
+
+/* Define if symbols declared in assembly code need an underscore prefix */
+#undef NEED_UNDERSCORE_PREFIX
diff --git a/include/advapi32.h b/include/advapi32.h
index 5de3830..3bd8cff 100644
--- a/include/advapi32.h
+++ b/include/advapi32.h
@@ -1,7 +1,6 @@
 #ifndef __WINE_ADVAPI32_H
 #define __WINE_ADVAPI32_H
 #include "shell.h"
-#include "kernel32.h"
 
 BOOL GetUserNameA (char * lpBuffer, DWORD  *nSize);
 
diff --git a/include/bitmap.h b/include/bitmap.h
index e9cafb7..7528707 100644
--- a/include/bitmap.h
+++ b/include/bitmap.h
@@ -48,7 +48,7 @@
 extern int DIB_BitmapInfoSize( BITMAPINFO * info, WORD coloruse );
 
   /* objects/oembitmap.c */
-extern HBITMAP OBM_LoadBitmap( WORD id );
-extern HANDLE OBM_LoadCursorIcon( WORD id, BOOL fCursor );
+extern HBITMAP16 OBM_LoadBitmap( WORD id );
+extern HGLOBAL16 OBM_LoadCursorIcon( WORD id, BOOL32 fCursor );
 
 #endif  /* __WINE_BITMAP_H */
diff --git a/include/callback.h b/include/callback.h
index 0339a89..5921cad 100644
--- a/include/callback.h
+++ b/include/callback.h
@@ -64,6 +64,8 @@
                                  style, MAKELONG(y,x), MAKELONG(cy,cx), \
                                  MAKELONG(hmenu,hparent), instance, params, \
                                  hwnd, msg, wParam, lParam )
+#define _InitTermProc( func ) CallTo32_0( (FARPROC32)func )
+
 
 /* List of the 32-bit callback functions. This list is used  */
 /* by the build program to generate the file if1632/callto32.S */
@@ -99,6 +101,8 @@
     (*func)( hwnd, msg, wParam, lParam )
 #define CallWordBreakProc( func, lpch, ichCurrent, cch, code ) \
     (*func)( lpch, ichCurrent, cch, code )
+#define _InitTermProc( func ) (*func)()
+
 
 #endif  /* WINELIB */
 
diff --git a/include/commctrl.h b/include/commctrl.h
new file mode 100644
index 0000000..a16e7bf
--- /dev/null
+++ b/include/commctrl.h
@@ -0,0 +1,51 @@
+/*
+ * Common controls definitions
+ */
+
+#ifndef __WINE_COMMCTRL_H
+#define __WINE_COMMCTRL_H
+
+#include "windows.h"
+
+void       InitCommonControls(void);
+
+/* StatusWindow */
+
+#define STATUSCLASSNAME16  "msctls_statusbar"
+#define STATUSCLASSNAME32A "msctls_statusbar32"
+#define STATUSCLASSNAME32W "msctls_statusbar32"
+#define STATUSCLASSNAME WINELIB_NAME_AW(STATUSCLASSNAME)
+
+#define SB_SETTEXT32A         (WM_USER+1)
+#define SB_SETTEXT32W         (WM_USER+11)
+#define SB_SETTEXT WINELIB_NAME_AW(SB_SETTEXT)
+#define SB_GETTEXT32A         (WM_USER+2)
+#define SB_GETTEXT32W         (WM_USER+13)
+#define SB_GETTEXT WINELIB_NAME_AW(SB_GETTEXT)
+#define SB_GETTEXTLENGTH32A   (WM_USER+3)
+#define SB_GETTEXTLENGTH32W   (WM_USER+12)
+#define SB_GETTEXTLENGTH WINELIB_NAME_AW(SB_GETTEXTLENGTH)
+
+#define SB_SETPARTS           (WM_USER+4)
+#define SB_GETPARTS           (WM_USER+6)
+#define SB_GETBORDERS         (WM_USER+7)
+#define SB_SETMINHEIGHT       (WM_USER+8)
+#define SB_SIMPLE             (WM_USER+9)
+#define SB_GETRECT            (WM_USER+10)
+
+#define SBT_NOBORDERS         0x0100
+#define SBT_POPOUT            0x0200
+#define SBT_RTLREADING        0x0400
+#define SBT_OWNERDRAW         0x1000
+
+#define CCS_BOTTOM            0x0003
+#define SBARS_SIZEGRIP        0x0100
+
+HWND32     CreateStatusWindow32A(INT32,LPCSTR,HWND32,UINT32);
+HWND32     CreateStatusWindow32W(INT32,LPCWSTR,HWND32,UINT32);
+#define    CreateStatusWindow WINELIB_NAME_AW(CreateStatusWindow)
+VOID       DrawStatusText32A(HDC32,LPRECT32,LPCSTR,UINT32);
+VOID       DrawStatusText32W(HDC32,LPRECT32,LPCWSTR,UINT32);
+#define    DrawStatusText WINELIB_NAME_AW(DrawStatusText)
+
+#endif  /* __WINE_COMMCTRL_H */
diff --git a/include/commdlg.h b/include/commdlg.h
index 0140d32..1a01a7c 100644
--- a/include/commdlg.h
+++ b/include/commdlg.h
@@ -206,8 +206,8 @@
 typedef struct {
 	DWORD 		lStructSize;
 	HWND 		hwndOwner;
-	HGLOBAL		hDevMode;
-	HGLOBAL		hDevNames;
+	HGLOBAL16       hDevMode;
+	HGLOBAL16       hDevNames;
 	HDC	       	hDC;
 	DWORD 		Flags;
 	UINT		nFromPage;
@@ -221,8 +221,8 @@
         WNDPROC16       lpfnSetupHook;
 	SEGPTR 		lpPrintTemplateName;
 	SEGPTR 		lpSetupTemplateName;
-	HGLOBAL 	hPrintTemplate;
-	HGLOBAL 	hSetupTemplate;
+	HGLOBAL16       hPrintTemplate;
+	HGLOBAL16       hSetupTemplate;
 	} PRINTDLG;
 typedef PRINTDLG * LPPRINTDLG;
 
diff --git a/include/config.h.in b/include/config.h.in
index 0bbdd70..638652a 100644
--- a/include/config.h.in
+++ b/include/config.h.in
@@ -15,6 +15,9 @@
 /* Define if you have the ANSI C header files.  */
 #undef STDC_HEADERS
 
+/* Define if symbols declared in assembly code need an underscore prefix */
+#undef NEED_UNDERSCORE_PREFIX
+
 /* Define if you have the memmove function.  */
 #undef HAVE_MEMMOVE
 
diff --git a/include/dde_mem.h b/include/dde_mem.h
index b2c3079..bdcdf3e 100644
--- a/include/dde_mem.h
+++ b/include/dde_mem.h
@@ -23,12 +23,12 @@
     REL_PTR rel;
 }DDE_HWND;
 
-WORD DDE_SyncHandle(HGLOBAL handle, WORD sel);
+WORD DDE_SyncHandle(HGLOBAL16 handle, WORD sel);
 void *DDE_malloc(unsigned int flags,unsigned long size, SHMDATA *shmdata);
 HANDLE DDE_GlobalReAlloc(WORD,long,WORD);
-HGLOBAL DDE_GlobalFree(HGLOBAL block);
-void *DDE_AttachHandle(HGLOBAL handle, SEGPTR *segptr);
-WORD DDE_GlobalHandleToSel( HGLOBAL handle );
+HGLOBAL16 DDE_GlobalFree(HGLOBAL16 block);
+void *DDE_AttachHandle(HGLOBAL16 handle, SEGPTR *segptr);
+WORD DDE_GlobalHandleToSel( HGLOBAL16 handle );
 int DDE_GlobalUnlock(int);
 HANDLE DDE_GlobalSize(WORD);
 HANDLE DDE_GlobalHandle(WORD);
diff --git a/include/debug.h b/include/debug.h
index 8936cca..a36689e 100644
--- a/include/debug.h
+++ b/include/debug.h
@@ -28,6 +28,7 @@
 #undef DEBUG_COMBO
 #undef DEBUG_COMM
 #undef DEBUG_COMMDLG
+#undef DEBUG_CRTDLL
 #undef DEBUG_CURSOR
 #undef DEBUG_DC
 #undef DEBUG_DDE
@@ -105,6 +106,7 @@
 #define DEBUG_COMBO
 #define DEBUG_COMM
 #define DEBUG_COMMDLG
+#define DEBUG_CRTDLL
 #define DEBUG_CURSOR
 #define DEBUG_DC
 #define DEBUG_DDE
@@ -232,6 +234,11 @@
 #else
     0,
 #endif
+#ifdef DEBUG_CRTDLL
+    1,
+#else
+    0,
+#endif
 #ifdef DEBUG_CURSOR
     1,
 #else
@@ -706,8 +713,21 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_cursor if(!debug_msg_enabled[12]) ; else fprintf
-#define debugging_cursor debug_msg_enabled[12]
+#define dprintf_crtdll if(!debug_msg_enabled[12]) ; else fprintf
+#define debugging_crtdll debug_msg_enabled[12]
+#else
+#ifdef DEBUG_CRTDLL
+#define dprintf_crtdll fprintf
+#define debugging_crtdll 1
+#else
+#define dprintf_crtdll while(0) fprintf
+#define debugging_crtdll 0
+#endif
+#endif
+
+#ifdef DEBUG_RUNTIME
+#define dprintf_cursor if(!debug_msg_enabled[13]) ; else fprintf
+#define debugging_cursor debug_msg_enabled[13]
 #else
 #ifdef DEBUG_CURSOR
 #define dprintf_cursor fprintf
@@ -719,8 +739,8 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_dc if(!debug_msg_enabled[13]) ; else fprintf
-#define debugging_dc debug_msg_enabled[13]
+#define dprintf_dc if(!debug_msg_enabled[14]) ; else fprintf
+#define debugging_dc debug_msg_enabled[14]
 #else
 #ifdef DEBUG_DC
 #define dprintf_dc fprintf
@@ -732,8 +752,8 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_dde if(!debug_msg_enabled[14]) ; else fprintf
-#define debugging_dde debug_msg_enabled[14]
+#define dprintf_dde if(!debug_msg_enabled[15]) ; else fprintf
+#define debugging_dde debug_msg_enabled[15]
 #else
 #ifdef DEBUG_DDE
 #define dprintf_dde fprintf
@@ -745,8 +765,8 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_dialog if(!debug_msg_enabled[15]) ; else fprintf
-#define debugging_dialog debug_msg_enabled[15]
+#define dprintf_dialog if(!debug_msg_enabled[16]) ; else fprintf
+#define debugging_dialog debug_msg_enabled[16]
 #else
 #ifdef DEBUG_DIALOG
 #define dprintf_dialog fprintf
@@ -758,8 +778,8 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_dll if(!debug_msg_enabled[16]) ; else fprintf
-#define debugging_dll debug_msg_enabled[16]
+#define dprintf_dll if(!debug_msg_enabled[17]) ; else fprintf
+#define debugging_dll debug_msg_enabled[17]
 #else
 #ifdef DEBUG_DLL
 #define dprintf_dll fprintf
@@ -771,8 +791,8 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_dosfs if(!debug_msg_enabled[17]) ; else fprintf
-#define debugging_dosfs debug_msg_enabled[17]
+#define dprintf_dosfs if(!debug_msg_enabled[18]) ; else fprintf
+#define debugging_dosfs debug_msg_enabled[18]
 #else
 #ifdef DEBUG_DOSFS
 #define dprintf_dosfs fprintf
@@ -784,8 +804,8 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_driver if(!debug_msg_enabled[18]) ; else fprintf
-#define debugging_driver debug_msg_enabled[18]
+#define dprintf_driver if(!debug_msg_enabled[19]) ; else fprintf
+#define debugging_driver debug_msg_enabled[19]
 #else
 #ifdef DEBUG_DRIVER
 #define dprintf_driver fprintf
@@ -797,8 +817,8 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_edit if(!debug_msg_enabled[19]) ; else fprintf
-#define debugging_edit debug_msg_enabled[19]
+#define dprintf_edit if(!debug_msg_enabled[20]) ; else fprintf
+#define debugging_edit debug_msg_enabled[20]
 #else
 #ifdef DEBUG_EDIT
 #define dprintf_edit fprintf
@@ -810,8 +830,8 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_env if(!debug_msg_enabled[20]) ; else fprintf
-#define debugging_env debug_msg_enabled[20]
+#define dprintf_env if(!debug_msg_enabled[21]) ; else fprintf
+#define debugging_env debug_msg_enabled[21]
 #else
 #ifdef DEBUG_ENV
 #define dprintf_env fprintf
@@ -823,8 +843,8 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_event if(!debug_msg_enabled[21]) ; else fprintf
-#define debugging_event debug_msg_enabled[21]
+#define dprintf_event if(!debug_msg_enabled[22]) ; else fprintf
+#define debugging_event debug_msg_enabled[22]
 #else
 #ifdef DEBUG_EVENT
 #define dprintf_event fprintf
@@ -836,8 +856,8 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_exec if(!debug_msg_enabled[22]) ; else fprintf
-#define debugging_exec debug_msg_enabled[22]
+#define dprintf_exec if(!debug_msg_enabled[23]) ; else fprintf
+#define debugging_exec debug_msg_enabled[23]
 #else
 #ifdef DEBUG_EXEC
 #define dprintf_exec fprintf
@@ -849,8 +869,8 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_file if(!debug_msg_enabled[23]) ; else fprintf
-#define debugging_file debug_msg_enabled[23]
+#define dprintf_file if(!debug_msg_enabled[24]) ; else fprintf
+#define debugging_file debug_msg_enabled[24]
 #else
 #ifdef DEBUG_FILE
 #define dprintf_file fprintf
@@ -862,8 +882,8 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_fixup if(!debug_msg_enabled[24]) ; else fprintf
-#define debugging_fixup debug_msg_enabled[24]
+#define dprintf_fixup if(!debug_msg_enabled[25]) ; else fprintf
+#define debugging_fixup debug_msg_enabled[25]
 #else
 #ifdef DEBUG_FIXUP
 #define dprintf_fixup fprintf
@@ -875,8 +895,8 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_font if(!debug_msg_enabled[25]) ; else fprintf
-#define debugging_font debug_msg_enabled[25]
+#define dprintf_font if(!debug_msg_enabled[26]) ; else fprintf
+#define debugging_font debug_msg_enabled[26]
 #else
 #ifdef DEBUG_FONT
 #define dprintf_font fprintf
@@ -888,8 +908,8 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_gdi if(!debug_msg_enabled[26]) ; else fprintf
-#define debugging_gdi debug_msg_enabled[26]
+#define dprintf_gdi if(!debug_msg_enabled[27]) ; else fprintf
+#define debugging_gdi debug_msg_enabled[27]
 #else
 #ifdef DEBUG_GDI
 #define dprintf_gdi fprintf
@@ -901,8 +921,8 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_global if(!debug_msg_enabled[27]) ; else fprintf
-#define debugging_global debug_msg_enabled[27]
+#define dprintf_global if(!debug_msg_enabled[28]) ; else fprintf
+#define debugging_global debug_msg_enabled[28]
 #else
 #ifdef DEBUG_GLOBAL
 #define dprintf_global fprintf
@@ -914,8 +934,8 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_graphics if(!debug_msg_enabled[28]) ; else fprintf
-#define debugging_graphics debug_msg_enabled[28]
+#define dprintf_graphics if(!debug_msg_enabled[29]) ; else fprintf
+#define debugging_graphics debug_msg_enabled[29]
 #else
 #ifdef DEBUG_GRAPHICS
 #define dprintf_graphics fprintf
@@ -927,8 +947,8 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_heap if(!debug_msg_enabled[29]) ; else fprintf
-#define debugging_heap debug_msg_enabled[29]
+#define dprintf_heap if(!debug_msg_enabled[30]) ; else fprintf
+#define debugging_heap debug_msg_enabled[30]
 #else
 #ifdef DEBUG_HEAP
 #define dprintf_heap fprintf
@@ -940,8 +960,8 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_hook if(!debug_msg_enabled[30]) ; else fprintf
-#define debugging_hook debug_msg_enabled[30]
+#define dprintf_hook if(!debug_msg_enabled[31]) ; else fprintf
+#define debugging_hook debug_msg_enabled[31]
 #else
 #ifdef DEBUG_HOOK
 #define dprintf_hook fprintf
@@ -953,8 +973,8 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_icon if(!debug_msg_enabled[31]) ; else fprintf
-#define debugging_icon debug_msg_enabled[31]
+#define dprintf_icon if(!debug_msg_enabled[32]) ; else fprintf
+#define debugging_icon debug_msg_enabled[32]
 #else
 #ifdef DEBUG_ICON
 #define dprintf_icon fprintf
@@ -966,8 +986,8 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_int if(!debug_msg_enabled[32]) ; else fprintf
-#define debugging_int debug_msg_enabled[32]
+#define dprintf_int if(!debug_msg_enabled[33]) ; else fprintf
+#define debugging_int debug_msg_enabled[33]
 #else
 #ifdef DEBUG_INT
 #define dprintf_int fprintf
@@ -979,8 +999,8 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_key if(!debug_msg_enabled[33]) ; else fprintf
-#define debugging_key debug_msg_enabled[33]
+#define dprintf_key if(!debug_msg_enabled[34]) ; else fprintf
+#define debugging_key debug_msg_enabled[34]
 #else
 #ifdef DEBUG_KEY
 #define dprintf_key fprintf
@@ -992,8 +1012,8 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_keyboard if(!debug_msg_enabled[34]) ; else fprintf
-#define debugging_keyboard debug_msg_enabled[34]
+#define dprintf_keyboard if(!debug_msg_enabled[35]) ; else fprintf
+#define debugging_keyboard debug_msg_enabled[35]
 #else
 #ifdef DEBUG_KEYBOARD
 #define dprintf_keyboard fprintf
@@ -1005,8 +1025,8 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_ldt if(!debug_msg_enabled[35]) ; else fprintf
-#define debugging_ldt debug_msg_enabled[35]
+#define dprintf_ldt if(!debug_msg_enabled[36]) ; else fprintf
+#define debugging_ldt debug_msg_enabled[36]
 #else
 #ifdef DEBUG_LDT
 #define dprintf_ldt fprintf
@@ -1018,8 +1038,8 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_listbox if(!debug_msg_enabled[36]) ; else fprintf
-#define debugging_listbox debug_msg_enabled[36]
+#define dprintf_listbox if(!debug_msg_enabled[37]) ; else fprintf
+#define debugging_listbox debug_msg_enabled[37]
 #else
 #ifdef DEBUG_LISTBOX
 #define dprintf_listbox fprintf
@@ -1031,8 +1051,8 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_local if(!debug_msg_enabled[37]) ; else fprintf
-#define debugging_local debug_msg_enabled[37]
+#define dprintf_local if(!debug_msg_enabled[38]) ; else fprintf
+#define debugging_local debug_msg_enabled[38]
 #else
 #ifdef DEBUG_LOCAL
 #define dprintf_local fprintf
@@ -1044,8 +1064,8 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_mci if(!debug_msg_enabled[38]) ; else fprintf
-#define debugging_mci debug_msg_enabled[38]
+#define dprintf_mci if(!debug_msg_enabled[39]) ; else fprintf
+#define debugging_mci debug_msg_enabled[39]
 #else
 #ifdef DEBUG_MCI
 #define dprintf_mci fprintf
@@ -1057,8 +1077,8 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_mcianim if(!debug_msg_enabled[39]) ; else fprintf
-#define debugging_mcianim debug_msg_enabled[39]
+#define dprintf_mcianim if(!debug_msg_enabled[40]) ; else fprintf
+#define debugging_mcianim debug_msg_enabled[40]
 #else
 #ifdef DEBUG_MCIANIM
 #define dprintf_mcianim fprintf
@@ -1070,8 +1090,8 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_mciwave if(!debug_msg_enabled[40]) ; else fprintf
-#define debugging_mciwave debug_msg_enabled[40]
+#define dprintf_mciwave if(!debug_msg_enabled[41]) ; else fprintf
+#define debugging_mciwave debug_msg_enabled[41]
 #else
 #ifdef DEBUG_MCIWAVE
 #define dprintf_mciwave fprintf
@@ -1083,8 +1103,8 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_mdi if(!debug_msg_enabled[41]) ; else fprintf
-#define debugging_mdi debug_msg_enabled[41]
+#define dprintf_mdi if(!debug_msg_enabled[42]) ; else fprintf
+#define debugging_mdi debug_msg_enabled[42]
 #else
 #ifdef DEBUG_MDI
 #define dprintf_mdi fprintf
@@ -1096,8 +1116,8 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_menu if(!debug_msg_enabled[42]) ; else fprintf
-#define debugging_menu debug_msg_enabled[42]
+#define dprintf_menu if(!debug_msg_enabled[43]) ; else fprintf
+#define debugging_menu debug_msg_enabled[43]
 #else
 #ifdef DEBUG_MENU
 #define dprintf_menu fprintf
@@ -1109,8 +1129,8 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_message if(!debug_msg_enabled[43]) ; else fprintf
-#define debugging_message debug_msg_enabled[43]
+#define dprintf_message if(!debug_msg_enabled[44]) ; else fprintf
+#define debugging_message debug_msg_enabled[44]
 #else
 #ifdef DEBUG_MESSAGE
 #define dprintf_message fprintf
@@ -1122,8 +1142,8 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_metafile if(!debug_msg_enabled[44]) ; else fprintf
-#define debugging_metafile debug_msg_enabled[44]
+#define dprintf_metafile if(!debug_msg_enabled[45]) ; else fprintf
+#define debugging_metafile debug_msg_enabled[45]
 #else
 #ifdef DEBUG_METAFILE
 #define dprintf_metafile fprintf
@@ -1135,8 +1155,8 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_midi if(!debug_msg_enabled[45]) ; else fprintf
-#define debugging_midi debug_msg_enabled[45]
+#define dprintf_midi if(!debug_msg_enabled[46]) ; else fprintf
+#define debugging_midi debug_msg_enabled[46]
 #else
 #ifdef DEBUG_MIDI
 #define dprintf_midi fprintf
@@ -1148,8 +1168,8 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_mmio if(!debug_msg_enabled[46]) ; else fprintf
-#define debugging_mmio debug_msg_enabled[46]
+#define dprintf_mmio if(!debug_msg_enabled[47]) ; else fprintf
+#define debugging_mmio debug_msg_enabled[47]
 #else
 #ifdef DEBUG_MMIO
 #define dprintf_mmio fprintf
@@ -1161,8 +1181,8 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_mmsys if(!debug_msg_enabled[47]) ; else fprintf
-#define debugging_mmsys debug_msg_enabled[47]
+#define dprintf_mmsys if(!debug_msg_enabled[48]) ; else fprintf
+#define debugging_mmsys debug_msg_enabled[48]
 #else
 #ifdef DEBUG_MMSYS
 #define dprintf_mmsys fprintf
@@ -1174,8 +1194,8 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_mmtime if(!debug_msg_enabled[48]) ; else fprintf
-#define debugging_mmtime debug_msg_enabled[48]
+#define dprintf_mmtime if(!debug_msg_enabled[49]) ; else fprintf
+#define debugging_mmtime debug_msg_enabled[49]
 #else
 #ifdef DEBUG_MMTIME
 #define dprintf_mmtime fprintf
@@ -1187,8 +1207,8 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_module if(!debug_msg_enabled[49]) ; else fprintf
-#define debugging_module debug_msg_enabled[49]
+#define dprintf_module if(!debug_msg_enabled[50]) ; else fprintf
+#define debugging_module debug_msg_enabled[50]
 #else
 #ifdef DEBUG_MODULE
 #define dprintf_module fprintf
@@ -1200,8 +1220,8 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_msg if(!debug_msg_enabled[50]) ; else fprintf
-#define debugging_msg debug_msg_enabled[50]
+#define dprintf_msg if(!debug_msg_enabled[51]) ; else fprintf
+#define debugging_msg debug_msg_enabled[51]
 #else
 #ifdef DEBUG_MSG
 #define dprintf_msg fprintf
@@ -1213,8 +1233,8 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_nonclient if(!debug_msg_enabled[51]) ; else fprintf
-#define debugging_nonclient debug_msg_enabled[51]
+#define dprintf_nonclient if(!debug_msg_enabled[52]) ; else fprintf
+#define debugging_nonclient debug_msg_enabled[52]
 #else
 #ifdef DEBUG_NONCLIENT
 #define dprintf_nonclient fprintf
@@ -1226,8 +1246,8 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_ole if(!debug_msg_enabled[52]) ; else fprintf
-#define debugging_ole debug_msg_enabled[52]
+#define dprintf_ole if(!debug_msg_enabled[53]) ; else fprintf
+#define debugging_ole debug_msg_enabled[53]
 #else
 #ifdef DEBUG_OLE
 #define dprintf_ole fprintf
@@ -1239,8 +1259,8 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_palette if(!debug_msg_enabled[53]) ; else fprintf
-#define debugging_palette debug_msg_enabled[53]
+#define dprintf_palette if(!debug_msg_enabled[54]) ; else fprintf
+#define debugging_palette debug_msg_enabled[54]
 #else
 #ifdef DEBUG_PALETTE
 #define dprintf_palette fprintf
@@ -1252,8 +1272,8 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_profile if(!debug_msg_enabled[54]) ; else fprintf
-#define debugging_profile debug_msg_enabled[54]
+#define dprintf_profile if(!debug_msg_enabled[55]) ; else fprintf
+#define debugging_profile debug_msg_enabled[55]
 #else
 #ifdef DEBUG_PROFILE
 #define dprintf_profile fprintf
@@ -1265,8 +1285,8 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_prop if(!debug_msg_enabled[55]) ; else fprintf
-#define debugging_prop debug_msg_enabled[55]
+#define dprintf_prop if(!debug_msg_enabled[56]) ; else fprintf
+#define debugging_prop debug_msg_enabled[56]
 #else
 #ifdef DEBUG_PROP
 #define dprintf_prop fprintf
@@ -1278,8 +1298,8 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_reg if(!debug_msg_enabled[56]) ; else fprintf
-#define debugging_reg debug_msg_enabled[56]
+#define dprintf_reg if(!debug_msg_enabled[57]) ; else fprintf
+#define debugging_reg debug_msg_enabled[57]
 #else
 #ifdef DEBUG_REG
 #define dprintf_reg fprintf
@@ -1291,8 +1311,8 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_region if(!debug_msg_enabled[57]) ; else fprintf
-#define debugging_region debug_msg_enabled[57]
+#define dprintf_region if(!debug_msg_enabled[58]) ; else fprintf
+#define debugging_region debug_msg_enabled[58]
 #else
 #ifdef DEBUG_REGION
 #define dprintf_region fprintf
@@ -1304,8 +1324,8 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_relay if(!debug_msg_enabled[58]) ; else fprintf
-#define debugging_relay debug_msg_enabled[58]
+#define dprintf_relay if(!debug_msg_enabled[59]) ; else fprintf
+#define debugging_relay debug_msg_enabled[59]
 #else
 #ifdef DEBUG_RELAY
 #define dprintf_relay fprintf
@@ -1317,8 +1337,8 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_resource if(!debug_msg_enabled[59]) ; else fprintf
-#define debugging_resource debug_msg_enabled[59]
+#define dprintf_resource if(!debug_msg_enabled[60]) ; else fprintf
+#define debugging_resource debug_msg_enabled[60]
 #else
 #ifdef DEBUG_RESOURCE
 #define dprintf_resource fprintf
@@ -1330,8 +1350,8 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_scroll if(!debug_msg_enabled[60]) ; else fprintf
-#define debugging_scroll debug_msg_enabled[60]
+#define dprintf_scroll if(!debug_msg_enabled[61]) ; else fprintf
+#define debugging_scroll debug_msg_enabled[61]
 #else
 #ifdef DEBUG_SCROLL
 #define dprintf_scroll fprintf
@@ -1343,8 +1363,8 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_selector if(!debug_msg_enabled[61]) ; else fprintf
-#define debugging_selector debug_msg_enabled[61]
+#define dprintf_selector if(!debug_msg_enabled[62]) ; else fprintf
+#define debugging_selector debug_msg_enabled[62]
 #else
 #ifdef DEBUG_SELECTOR
 #define dprintf_selector fprintf
@@ -1356,8 +1376,8 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_sem if(!debug_msg_enabled[62]) ; else fprintf
-#define debugging_sem debug_msg_enabled[62]
+#define dprintf_sem if(!debug_msg_enabled[63]) ; else fprintf
+#define debugging_sem debug_msg_enabled[63]
 #else
 #ifdef DEBUG_SEM
 #define dprintf_sem fprintf
@@ -1369,8 +1389,8 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_shm if(!debug_msg_enabled[63]) ; else fprintf
-#define debugging_shm debug_msg_enabled[63]
+#define dprintf_shm if(!debug_msg_enabled[64]) ; else fprintf
+#define debugging_shm debug_msg_enabled[64]
 #else
 #ifdef DEBUG_SHM
 #define dprintf_shm fprintf
@@ -1382,8 +1402,8 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_stress if(!debug_msg_enabled[64]) ; else fprintf
-#define debugging_stress debug_msg_enabled[64]
+#define dprintf_stress if(!debug_msg_enabled[65]) ; else fprintf
+#define debugging_stress debug_msg_enabled[65]
 #else
 #ifdef DEBUG_STRESS
 #define dprintf_stress fprintf
@@ -1395,8 +1415,8 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_syscolor if(!debug_msg_enabled[65]) ; else fprintf
-#define debugging_syscolor debug_msg_enabled[65]
+#define dprintf_syscolor if(!debug_msg_enabled[66]) ; else fprintf
+#define debugging_syscolor debug_msg_enabled[66]
 #else
 #ifdef DEBUG_SYSCOLOR
 #define dprintf_syscolor fprintf
@@ -1408,8 +1428,8 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_task if(!debug_msg_enabled[66]) ; else fprintf
-#define debugging_task debug_msg_enabled[66]
+#define dprintf_task if(!debug_msg_enabled[67]) ; else fprintf
+#define debugging_task debug_msg_enabled[67]
 #else
 #ifdef DEBUG_TASK
 #define dprintf_task fprintf
@@ -1421,8 +1441,8 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_text if(!debug_msg_enabled[67]) ; else fprintf
-#define debugging_text debug_msg_enabled[67]
+#define dprintf_text if(!debug_msg_enabled[68]) ; else fprintf
+#define debugging_text debug_msg_enabled[68]
 #else
 #ifdef DEBUG_TEXT
 #define dprintf_text fprintf
@@ -1434,8 +1454,8 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_timer if(!debug_msg_enabled[68]) ; else fprintf
-#define debugging_timer debug_msg_enabled[68]
+#define dprintf_timer if(!debug_msg_enabled[69]) ; else fprintf
+#define debugging_timer debug_msg_enabled[69]
 #else
 #ifdef DEBUG_TIMER
 #define dprintf_timer fprintf
@@ -1447,8 +1467,8 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_toolhelp if(!debug_msg_enabled[69]) ; else fprintf
-#define debugging_toolhelp debug_msg_enabled[69]
+#define dprintf_toolhelp if(!debug_msg_enabled[70]) ; else fprintf
+#define debugging_toolhelp debug_msg_enabled[70]
 #else
 #ifdef DEBUG_TOOLHELP
 #define dprintf_toolhelp fprintf
@@ -1460,8 +1480,8 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_vxd if(!debug_msg_enabled[70]) ; else fprintf
-#define debugging_vxd debug_msg_enabled[70]
+#define dprintf_vxd if(!debug_msg_enabled[71]) ; else fprintf
+#define debugging_vxd debug_msg_enabled[71]
 #else
 #ifdef DEBUG_VXD
 #define dprintf_vxd fprintf
@@ -1473,8 +1493,8 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_win if(!debug_msg_enabled[71]) ; else fprintf
-#define debugging_win debug_msg_enabled[71]
+#define dprintf_win if(!debug_msg_enabled[72]) ; else fprintf
+#define debugging_win debug_msg_enabled[72]
 #else
 #ifdef DEBUG_WIN
 #define dprintf_win fprintf
@@ -1486,8 +1506,8 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_win32 if(!debug_msg_enabled[72]) ; else fprintf
-#define debugging_win32 debug_msg_enabled[72]
+#define dprintf_win32 if(!debug_msg_enabled[73]) ; else fprintf
+#define debugging_win32 debug_msg_enabled[73]
 #else
 #ifdef DEBUG_WIN32
 #define dprintf_win32 fprintf
@@ -1499,8 +1519,8 @@
 #endif
 
 #ifdef DEBUG_RUNTIME
-#define dprintf_winsock if(!debug_msg_enabled[73]) ; else fprintf
-#define debugging_winsock debug_msg_enabled[73]
+#define dprintf_winsock if(!debug_msg_enabled[74]) ; else fprintf
+#define debugging_winsock debug_msg_enabled[74]
 #else
 #ifdef DEBUG_WINSOCK
 #define dprintf_winsock fprintf
@@ -1527,6 +1547,7 @@
     "combo",
     "comm",
     "commdlg",
+    "crtdll",
     "cursor",
     "dc",
     "dde",
diff --git a/include/driver.h b/include/driver.h
index 63e0651..a033802 100644
--- a/include/driver.h
+++ b/include/driver.h
@@ -54,7 +54,7 @@
     DRIVERPROC            lpDrvProc;
 } DRIVERITEM, *LPDRIVERITEM;
 
-LRESULT DefDriverProc(DWORD dwDevID, HDRVR hDriv, UINT16 wMsg, 
+LRESULT DefDriverProc(DWORD dwDevID, HDRVR16 hDriv, UINT16 wMsg, 
                       LPARAM dwParam1, LPARAM dwParam2);
 HDRVR16 OpenDriver(LPSTR szDriverName, LPSTR szSectionName, LPARAM lParam2);
 LRESULT CloseDriver(HDRVR16 hDriver, LPARAM lParam1, LPARAM lParam2);
diff --git a/include/kernel32.h b/include/kernel32.h
deleted file mode 100644
index ab3b567..0000000
--- a/include/kernel32.h
+++ /dev/null
@@ -1,124 +0,0 @@
-/* kernel32.h - 95-09-14  Cameron Heide
- *
- * Win32 functions, structures, and types related to kernel functions
- */
-#ifndef __WINE_KERNEL32_H
-#define __WINE_KERNEL32_H
-
-#include <stddef.h>
-
-int KERN32_Init(void);
-void SetLastError(DWORD error);
-DWORD ErrnoToLastError(int errno_num);
-void ExitProcess(DWORD exitcode);
-
-/* Code page information.
- */
-typedef struct {
-        DWORD MaxCharSize;
-        BYTE DefaultChar[2];
-        BYTE LeadBytes[5];
-} CPINFO, *LPCPINFO;
-
-/* The 'overlapped' data structure used by async I/O functions.
- */
-typedef struct {
-        DWORD Internal;
-        DWORD InternalHigh;
-        DWORD Offset;
-        DWORD OffsetHigh;
-        HANDLE32 hEvent;
-} OVERLAPPED, *LPOVERLAPPED;
-
-/* Process startup information.
- */
-typedef struct {
-        DWORD cb;
-        LPSTR lpReserved;
-        LPSTR lpDesktop;
-        LPSTR lpTitle;
-        DWORD dwX;
-        DWORD dwY;
-        DWORD dwXSize;
-        DWORD dwYSize;
-        DWORD dwXCountChars;
-        DWORD dwYCountChars;
-        DWORD dwFillAttribute;
-        DWORD dwFlags;
-        WORD wShowWindow;
-        WORD cbReserved2;
-        BYTE *lpReserved2;
-        HANDLE32 hStdInput;
-        HANDLE32 hStdOutput;
-        HANDLE32 hStdError;
-} STARTUPINFO, *LPSTARTUPINFO;
-
-typedef struct {
-        LONG Bias;
-        WCHAR StandardName[32];
-        SYSTEMTIME StandardDate;
-        LONG StandardBias;
-        WCHAR DaylightName[32];
-        SYSTEMTIME DaylightDate;
-        LONG DaylightBias;
-} TIME_ZONE_INFORMATION, *LPTIME_ZONE_INFORMATION;
-
-#define TIME_ZONE_ID_UNKNOWN    0
-#define TIME_ZONE_ID_STANDARD   1
-#define TIME_ZONE_ID_DAYLIGHT   2
-
-
-/* File object type definitions
- */
-#define FILE_TYPE_UNKNOWN       0
-#define FILE_TYPE_DISK          1
-#define FILE_TYPE_CHAR          2
-#define FILE_TYPE_PIPE          3
-#define FILE_TYPE_REMOTE        32768
-
-/* File creation flags
- */
-#define GENERIC_READ            0x80000000L
-#define GENERIC_WRITE           0x40000000L
-#define CREATE_NEW              1
-#define CREATE_ALWAYS           2
-#define OPEN_EXISTING           3
-#define OPEN_ALWAYS             4
-#define TRUNCATE_EXISTING       5
-
-/* Standard handle identifiers
- */
-#define STD_INPUT_HANDLE        ((DWORD) -10)
-#define STD_OUTPUT_HANDLE       ((DWORD) -11)
-#define STD_ERROR_HANDLE        ((DWORD) -12)
-
-typedef struct
-{
-  int dwFileAttributes;
-  FILETIME ftCreationTime;
-  FILETIME ftLastAccessTime;
-  FILETIME ftLastWriteTime;
-  int dwVolumeSerialNumber;
-  int nFileSizeHigh;
-  int nFileSizeLow;
-  int nNumberOfLinks;
-  int nFileIndexHigh;
-  int nFileIndexLow;
-} BY_HANDLE_FILE_INFORMATION ;
-
-/* File attribute flags
- */
-#define FILE_ATTRIBUTE_ARCHIVE          0x0020
-#define FILE_ATTRIBUTE_COMPRESSED       0x0800
-#define FILE_ATTRIBUTE_DIRECTORY        0x0010
-#define FILE_ATTRIBUTE_HIDDEN           0x0002
-#define FILE_ATTRIBUTE_NORMAL           0x0080
-#define FILE_ATTRIBUTE_READONLY         0x0001
-#define FILE_ATTRIBUTE_SYSTEM           0x0004
-#define FILE_ATTRIBUTE_TEMPORARY        0x0100
-#define FILE_ATTRIBUTE_ATOMIC_WRITE     0x0200
-#define FILE_ATTRIBUTE_XACTION_WRITE    0x0400
-
-BOOL32     SetTimeZoneInformation(const TIME_ZONE_INFORMATION*);
-
-#endif  /* __WINE_KERNEL32_H */
diff --git a/include/libres.h b/include/libres.h
index b7e9dcd..f1e9628 100644
--- a/include/libres.h
+++ b/include/libres.h
@@ -9,10 +9,10 @@
 #include "wintypes.h"
 #include "resource.h"
 
-extern INT     LIBRES_AccessResource( HINSTANCE hModule, HRSRC hRsrc );
-extern HGLOBAL LIBRES_AllocResource( HINSTANCE hModule, HRSRC hRsrc, DWORD size );
+extern INT     LIBRES_AccessResource( HINSTANCE hModule, HRSRC32 hRsrc );
+extern HGLOBAL32 LIBRES_AllocResource( HINSTANCE hModule, HRSRC32 hRsrc, DWORD size );
 extern HRSRC32 LIBRES_FindResource( HINSTANCE hModule, LPCSTR name, LPCSTR type );
-extern BOOL    LIBRES_FreeResource( HGLOBAL handle );
+extern BOOL    LIBRES_FreeResource( HGLOBAL32 handle );
 extern HGLOBAL32 LIBRES_LoadResource( HINSTANCE hModule, HRSRC32 hRsrc );
 extern LPVOID  LIBRES_LockResource( HGLOBAL32 handle );
 extern DWORD   LIBRES_SizeofResource( HINSTANCE hModule, HRSRC32 hRsrc );
diff --git a/include/metafile.h b/include/metafile.h
index 06f4e63..5e475c1 100644
--- a/include/metafile.h
+++ b/include/metafile.h
@@ -13,7 +13,7 @@
 #define MFVERSION 0x300
 #define META_EOF 0x0000
 
-HMETAFILE MF_WriteRecord(HMETAFILE hmf, METARECORD *mr, WORD rlen);
+HMETAFILE16 MF_WriteRecord(HMETAFILE16 hmf, METARECORD *mr, WORD rlen);
 int MF_AddHandle(HANDLETABLE16 *ht, WORD htlen, HANDLE hobj);
 int MF_AddHandleInternal(HANDLE hobj);
 BOOL MF_MetaParam0(DC *dc, short func);
diff --git a/include/mmsystem.h b/include/mmsystem.h
index 063e995..4d35773 100644
--- a/include/mmsystem.h
+++ b/include/mmsystem.h
@@ -108,7 +108,7 @@
 #define CALLBACK_TASK       0x00020000l    /* dwCallback is a HTASK */
 #define CALLBACK_FUNCTION   0x00030000l    /* dwCallback is a FARPROC */
 
-typedef void (*LPDRVCALLBACK) (HDRVR h, UINT uMessage, DWORD dwUser, DWORD dw1, DWORD dw2);
+typedef void (*LPDRVCALLBACK) (HDRVR16 h, UINT uMessage, DWORD dwUser, DWORD dw1, DWORD dw2);
 
 #define MM_MICROSOFT            1       /* Microsoft Corp. */
 
@@ -148,8 +148,8 @@
 #define WAVERR_SYNC           (WAVERR_BASE + 3)    /* device is synchronous */
 #define WAVERR_LASTERROR      (WAVERR_BASE + 3)    /* last error in range */
 
-typedef HWAVEIN *LPHWAVEIN;
-typedef HWAVEOUT *LPHWAVEOUT;
+typedef HWAVEIN16 *LPHWAVEIN16;
+typedef HWAVEOUT16 *LPHWAVEOUT16;
 typedef LPDRVCALLBACK LPWAVECALLBACK;
 
 #define WOM_OPEN        MM_WOM_OPEN
@@ -243,50 +243,50 @@
 UINT waveOutSetVolume(UINT uDeviceID, DWORD dwVolume);
 UINT waveOutGetErrorText(UINT uError, LPSTR lpText, UINT uSize);
 UINT waveGetErrorText(UINT uError, LPSTR lpText, UINT uSize);
-UINT waveOutOpen(HWAVEOUT * lphWaveOut, UINT uDeviceID,
+UINT waveOutOpen(HWAVEOUT16 * lphWaveOut, UINT uDeviceID,
     const LPWAVEFORMAT lpFormat, DWORD dwCallback, DWORD dwInstance, DWORD dwFlags);
-UINT waveOutClose(HWAVEOUT hWaveOut);
-UINT waveOutPrepareHeader(HWAVEOUT hWaveOut,
+UINT waveOutClose(HWAVEOUT16 hWaveOut);
+UINT waveOutPrepareHeader(HWAVEOUT16 hWaveOut,
      WAVEHDR * lpWaveOutHdr, UINT uSize);
-UINT waveOutUnprepareHeader(HWAVEOUT hWaveOut,
+UINT waveOutUnprepareHeader(HWAVEOUT16 hWaveOut,
     WAVEHDR * lpWaveOutHdr, UINT uSize);
-UINT waveOutWrite(HWAVEOUT hWaveOut, WAVEHDR * lpWaveOutHdr,
+UINT waveOutWrite(HWAVEOUT16 hWaveOut, WAVEHDR * lpWaveOutHdr,
     UINT uSize);
-UINT waveOutPause(HWAVEOUT hWaveOut);
-UINT waveOutRestart(HWAVEOUT hWaveOut);
-UINT waveOutReset(HWAVEOUT hWaveOut);
-UINT waveOutBreakLoop(HWAVEOUT hWaveOut);
-UINT waveOutGetPosition(HWAVEOUT hWaveOut, MMTIME * lpInfo,
+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(HWAVEOUT hWaveOut, DWORD * lpdwPitch);
-UINT waveOutSetPitch(HWAVEOUT hWaveOut, DWORD dwPitch);
-UINT waveOutGetPlaybackRate(HWAVEOUT hWaveOut, DWORD * lpdwRate);
-UINT waveOutSetPlaybackRate(HWAVEOUT hWaveOut, DWORD dwRate);
-UINT waveOutGetID(HWAVEOUT hWaveOut, UINT * lpuDeviceID);
+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);
 
-DWORD waveOutMessage(HWAVEOUT hWaveOut, UINT uMessage, DWORD dw1, DWORD dw2);
+DWORD waveOutMessage(HWAVEOUT16 hWaveOut, UINT 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(HWAVEIN * lphWaveIn, UINT uDeviceID,
+UINT waveInOpen(HWAVEIN16 * lphWaveIn, UINT uDeviceID,
     const LPWAVEFORMAT lpFormat, DWORD dwCallback, DWORD dwInstance, DWORD dwFlags);
-UINT waveInClose(HWAVEIN hWaveIn);
-UINT waveInPrepareHeader(HWAVEIN hWaveIn,
+UINT waveInClose(HWAVEIN16 hWaveIn);
+UINT waveInPrepareHeader(HWAVEIN16 hWaveIn,
     WAVEHDR * lpWaveInHdr, UINT uSize);
-UINT waveInUnprepareHeader(HWAVEIN hWaveIn,
+UINT waveInUnprepareHeader(HWAVEIN16 hWaveIn,
     WAVEHDR * lpWaveInHdr, UINT uSize);
-UINT waveInAddBuffer(HWAVEIN hWaveIn,
+UINT waveInAddBuffer(HWAVEIN16 hWaveIn,
     WAVEHDR * lpWaveInHdr, UINT uSize);
-UINT waveInStart(HWAVEIN hWaveIn);
-UINT waveInStop(HWAVEIN hWaveIn);
-UINT waveInReset(HWAVEIN hWaveIn);
-UINT waveInGetPosition(HWAVEIN hWaveIn, MMTIME * lpInfo,
+UINT waveInStart(HWAVEIN16 hWaveIn);
+UINT waveInStop(HWAVEIN16 hWaveIn);
+UINT waveInReset(HWAVEIN16 hWaveIn);
+UINT waveInGetPosition(HWAVEIN16 hWaveIn, MMTIME * lpInfo,
     UINT uSize);
-UINT waveInGetID(HWAVEIN hWaveIn, UINT * lpuDeviceID);
+UINT waveInGetID(HWAVEIN16 hWaveIn, UINT * lpuDeviceID);
 
-DWORD waveInMessage(HWAVEIN hWaveIn, UINT uMessage, DWORD dw1, DWORD dw2);
+DWORD waveInMessage(HWAVEIN16 hWaveIn, UINT uMessage, DWORD dw1, DWORD dw2);
 
 #define MIDIERR_UNPREPARED    (MIDIERR_BASE + 0)   /* header not prepared */
 #define MIDIERR_STILLPLAYING  (MIDIERR_BASE + 1)   /* still something playing */
@@ -296,8 +296,8 @@
 #define MIDIERR_INVALIDSETUP  (MIDIERR_BASE + 5)   /* invalid setup */
 #define MIDIERR_LASTERROR     (MIDIERR_BASE + 5)   /* last error in range */
 
-typedef HMIDIIN  *LPHMIDIIN;
-typedef HMIDIOUT  *LPHMIDIOUT;
+typedef HMIDIIN16  *LPHMIDIIN16;
+typedef HMIDIOUT16  *LPHMIDIOUT16;
 typedef LPDRVCALLBACK LPMIDICALLBACK;
 #define MIDIPATCHSIZE   128
 typedef WORD PATCHARRAY[MIDIPATCHSIZE];
@@ -376,44 +376,44 @@
 UINT midiOutSetVolume(UINT uDeviceID, DWORD dwVolume);
 UINT midiOutGetErrorText(UINT uError, LPSTR lpText, UINT uSize);
 UINT midiGetErrorText(UINT uError, LPSTR lpText, UINT uSize);
-UINT midiOutOpen(HMIDIOUT * lphMidiOut, UINT uDeviceID,
+UINT midiOutOpen(HMIDIOUT16 * lphMidiOut, UINT uDeviceID,
     DWORD dwCallback, DWORD dwInstance, DWORD dwFlags);
-UINT midiOutClose(HMIDIOUT hMidiOut);
-UINT midiOutPrepareHeader(HMIDIOUT hMidiOut,
+UINT midiOutClose(HMIDIOUT16 hMidiOut);
+UINT midiOutPrepareHeader(HMIDIOUT16 hMidiOut,
     MIDIHDR * lpMidiOutHdr, UINT uSize);
-UINT midiOutUnprepareHeader(HMIDIOUT hMidiOut,
+UINT midiOutUnprepareHeader(HMIDIOUT16 hMidiOut,
     MIDIHDR * lpMidiOutHdr, UINT uSize);
-UINT midiOutShortMsg(HMIDIOUT hMidiOut, DWORD dwMsg);
-UINT midiOutLongMsg(HMIDIOUT hMidiOut,
+UINT midiOutShortMsg(HMIDIOUT16 hMidiOut, DWORD dwMsg);
+UINT midiOutLongMsg(HMIDIOUT16 hMidiOut,
     MIDIHDR * lpMidiOutHdr, UINT uSize);
-UINT midiOutReset(HMIDIOUT hMidiOut);
-UINT midiOutCachePatches(HMIDIOUT hMidiOut,
+UINT midiOutReset(HMIDIOUT16 hMidiOut);
+UINT midiOutCachePatches(HMIDIOUT16 hMidiOut,
     UINT uBank, WORD * lpwPatchArray, UINT uFlags);
-UINT midiOutCacheDrumPatches(HMIDIOUT hMidiOut,
+UINT midiOutCacheDrumPatches(HMIDIOUT16 hMidiOut,
     UINT uPatch, WORD * lpwKeyArray, UINT uFlags);
-UINT midiOutGetID(HMIDIOUT hMidiOut, UINT * lpuDeviceID);
+UINT midiOutGetID(HMIDIOUT16 hMidiOut, UINT * lpuDeviceID);
 
-DWORD midiOutMessage(HMIDIOUT hMidiOut, UINT uMessage, DWORD dw1, DWORD dw2);
+DWORD midiOutMessage(HMIDIOUT16 hMidiOut, UINT 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(HMIDIIN * lphMidiIn, UINT uDeviceID,
+UINT midiInOpen(HMIDIIN16 * lphMidiIn, UINT uDeviceID,
     DWORD dwCallback, DWORD dwInstance, DWORD dwFlags);
-UINT midiInClose(HMIDIIN hMidiIn);
-UINT midiInPrepareHeader(HMIDIIN hMidiIn,
+UINT midiInClose(HMIDIIN16 hMidiIn);
+UINT midiInPrepareHeader(HMIDIIN16 hMidiIn,
     MIDIHDR * lpMidiInHdr, UINT uSize);
-UINT midiInUnprepareHeader(HMIDIIN hMidiIn,
+UINT midiInUnprepareHeader(HMIDIIN16 hMidiIn,
     MIDIHDR * lpMidiInHdr, UINT uSize);
-UINT midiInAddBuffer(HMIDIIN hMidiIn,
+UINT midiInAddBuffer(HMIDIIN16 hMidiIn,
     MIDIHDR * lpMidiInHdr, UINT uSize);
-UINT midiInStart(HMIDIIN hMidiIn);
-UINT midiInStop(HMIDIIN hMidiIn);
-UINT midiInReset(HMIDIIN hMidiIn);
-UINT midiInGetID(HMIDIIN hMidiIn, UINT * lpuDeviceID);
+UINT midiInStart(HMIDIIN16 hMidiIn);
+UINT midiInStop(HMIDIIN16 hMidiIn);
+UINT midiInReset(HMIDIIN16 hMidiIn);
+UINT midiInGetID(HMIDIIN16 hMidiIn, UINT * lpuDeviceID);
 
-DWORD midiInMessage(HMIDIIN hMidiIn, UINT uMessage, DWORD dw1, DWORD dw2);
+DWORD midiInMessage(HMIDIIN16 hMidiIn, UINT uMessage, DWORD dw1, DWORD dw2);
 
 #define AUX_MAPPER     (-1)
 
@@ -547,7 +547,7 @@
         /* other fields maintained by MMIO */
         DWORD           dwReserved1;    /* reserved for MMIO use */
         DWORD           dwReserved2;    /* reserved for MMIO use */
-        HMMIO           hmmio;          /* handle to open file */
+        HMMIO16         hmmio;          /* handle to open file */
 } MMIOINFO, *LPMMIOINFO;
 
 typedef struct _MMCKINFO
@@ -624,28 +624,28 @@
 FOURCC mmioStringToFOURCC(LPCSTR sz, UINT uFlags);
 LPMMIOPROC mmioInstallIOProc(FOURCC fccIOProc, LPMMIOPROC pIOProc,
     DWORD dwFlags);
-HMMIO mmioOpen(LPSTR szFileName, MMIOINFO * lpmmioinfo,
+HMMIO16 mmioOpen(LPSTR szFileName, MMIOINFO * lpmmioinfo,
     DWORD dwOpenFlags);
 
 UINT mmioRename(LPCSTR szFileName, LPCSTR szNewFileName,
      MMIOINFO * lpmmioinfo, DWORD dwRenameFlags);
 
-UINT mmioClose(HMMIO hmmio, UINT uFlags);
-LONG mmioRead(HMMIO hmmio, HPSTR pch, LONG cch);
-LONG mmioWrite(HMMIO hmmio, HPCSTR pch, LONG cch);
-LONG mmioSeek(HMMIO hmmio, LONG lOffset, int iOrigin);
-UINT mmioGetInfo(HMMIO hmmio, MMIOINFO * lpmmioinfo, UINT uFlags);
-UINT mmioSetInfo(HMMIO hmmio, const MMIOINFO * lpmmioinfo, UINT uFlags);
-UINT mmioSetBuffer(HMMIO hmmio, LPSTR pchBuffer, LONG cchBuffer,
+UINT mmioClose(HMMIO16 hmmio, UINT 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(HMMIO hmmio, UINT uFlags);
-UINT mmioAdvance(HMMIO hmmio, MMIOINFO * lpmmioinfo, UINT uFlags);
-LONG mmioSendMessage(HMMIO hmmio, UINT uMessage,
+UINT mmioFlush(HMMIO16 hmmio, UINT uFlags);
+UINT mmioAdvance(HMMIO16 hmmio, MMIOINFO * lpmmioinfo, UINT uFlags);
+LONG mmioSendMessage(HMMIO16 hmmio, UINT uMessage,
     LPARAM lParam1, LPARAM lParam2);
-UINT mmioDescend(HMMIO hmmio, MMCKINFO * lpck,
+UINT mmioDescend(HMMIO16 hmmio, MMCKINFO * lpck,
     const MMCKINFO * lpckParent, UINT uFlags);
-UINT mmioAscend(HMMIO hmmio, MMCKINFO * lpck, UINT uFlags);
-UINT mmioCreateChunk(HMMIO hmmio, MMCKINFO * lpck, UINT uFlags);
+UINT mmioAscend(HMMIO16 hmmio, MMCKINFO * lpck, UINT uFlags);
+UINT mmioCreateChunk(HMMIO16 hmmio, MMCKINFO * lpck, UINT uFlags);
 
 typedef UINT (*YIELDPROC) (UINT uDeviceID, DWORD dwYieldData);
 
@@ -1476,19 +1476,19 @@
 typedef struct {
 	DWORD   	dwCallback;
 	DWORD   	dwInstance;
-	HMIDIOUT	hMidi;
+	HMIDIOUT16	hMidi;
 	DWORD   	dwFlags;
 } PORTALLOC, *LPPORTALLOC;
 
 typedef struct {
-	HWAVE			hWave;
+	HWAVE16			hWave;
 	LPWAVEFORMAT	lpFormat;
 	DWORD			dwCallBack;
 	DWORD			dwInstance;
 } WAVEOPENDESC, *LPWAVEOPENDESC;
 
 typedef struct {
-	HMIDI			hMidi;
+	HMIDI16			hMidi;
 	DWORD			dwCallback;
 	DWORD			dwInstance;
 } MIDIOPENDESC, *LPMIDIOPENDESC;
diff --git a/include/ole.h b/include/ole.h
index 9e3795d..a85f105 100644
--- a/include/ole.h
+++ b/include/ole.h
@@ -170,7 +170,7 @@
 	OLESTATUS	(*GetObject)(LPOLESERVERDOC,OLE_LPCSTR,LPOLEOBJECT*,LPOLECLIENT);
 	OLESTATUS	(*Release)(LPOLESERVERDOC);
 	OLESTATUS	(*SetColorScheme)(LPOLESERVERDOC,LPLOGPALETTE);
-	OLESTATUS	(*Execute)(LPOLESERVERDOC,HGLOBAL);
+	OLESTATUS	(*Execute)(LPOLESERVERDOC,HGLOBAL16);
 } OLESERVERDOCVTBL;
 typedef OLESERVERDOCVTBL*	LPOLESERVERDOCVTBL;
 typedef struct _OLESERVERDOC {
@@ -210,7 +210,7 @@
 	OLESTATUS	(*DoVerb)(LPOLEOBJECT,UINT,BOOL,BOOL);
 	OLESTATUS	(*GetData)(LPOLEOBJECT,OLECLIPFORMAT,HANDLE *);
 	OLESTATUS	(*SetData)(LPOLEOBJECT,OLECLIPFORMAT,HANDLE);
-	OLESTATUS	(*SetTargetDevice)(LPOLEOBJECT,HGLOBAL);
+	OLESTATUS	(*SetTargetDevice)(LPOLEOBJECT,HGLOBAL16);
 	OLESTATUS	(*SetBounds)(LPOLEOBJECT,LPRECT16);
 	OLESTATUS	(*EnumFormats)(LPOLEOBJECT,OLECLIPFORMAT);
 	OLESTATUS	(*SetColorScheme)(LPOLEOBJECT,LPLOGPALETTE);
@@ -223,7 +223,7 @@
 	OLESTATUS	(*CopyToClipBoard)(LPOLEOBJECT);
 	OLESTATUS	(*Draw)(LPOLEOBJECT,HDC,LPRECT16,LPRECT16,HDC);
 	OLESTATUS	(*Activate)(LPOLEOBJECT,UINT,BOOL,BOOL,HWND,LPRECT16);
-	OLESTATUS	(*Execute)(LPOLEOBJECT,HGLOBAL,UINT);
+	OLESTATUS	(*Execute)(LPOLEOBJECT,HGLOBAL16,UINT);
 	OLESTATUS	(*Close)(LPOLEOBJECT);
 	OLESTATUS	(*Update)(LPOLEOBJECT);
 	OLESTATUS	(*Reconnect)(LPOLEOBJECT);
diff --git a/include/queue.h b/include/queue.h
index 8743eb7..e861d85 100644
--- a/include/queue.h
+++ b/include/queue.h
@@ -68,6 +68,8 @@
 
 extern void QUEUE_DumpQueue( HQUEUE16 hQueue );
 extern void QUEUE_WalkQueues(void);
+extern HQUEUE16 QUEUE_GetDoomedQueue();
+extern void QUEUE_SetDoomedQueue( HQUEUE16 hQueue );
 extern MESSAGEQUEUE *QUEUE_GetSysQueue(void);
 extern void QUEUE_SetWakeBit( MESSAGEQUEUE *queue, WORD bit );
 extern void QUEUE_ClearWakeBit( MESSAGEQUEUE *queue, WORD bit );
diff --git a/include/region.h b/include/region.h
index e73fc23..5aecf71 100644
--- a/include/region.h
+++ b/include/region.h
@@ -18,6 +18,7 @@
 
 
 extern BOOL16 REGION_DeleteObject( HRGN32 hrgn, RGNOBJ * obj );
+extern BOOL16 REGION_UnionRectWithRgn( HRGN32 hrgn, LPRECT16 lpRect );
 extern BOOL16 REGION_FrameRgn( HRGN32 dest, HRGN32 src, INT32 x, INT32 y );
 
 #endif  /* __WINE_REGION_H */
diff --git a/include/resource.h b/include/resource.h
index 7f202c0..e54ea95 100644
--- a/include/resource.h
+++ b/include/resource.h
@@ -43,15 +43,16 @@
 #define WINE_CONSTRUCTOR
 #endif
 
-extern int NE_AccessResource( HMODULE16 hModule, HRSRC hRsrc );
-extern BOOL NE_FreeResource( HMODULE16 hModule, HGLOBAL handle );
-extern HRSRC NE_FindResource( HMODULE16 hModule, SEGPTR typeId, SEGPTR resId );
-extern DWORD NE_SizeofResource( HMODULE16 hModule, HRSRC hRsrc );
-extern SEGPTR NE_LockResource( HMODULE16 hModule, HGLOBAL handle );
-extern HGLOBAL NE_AllocResource( HMODULE16 hModule, HRSRC hRsrc, DWORD size );
-extern HGLOBAL NE_LoadResource( HMODULE16 hModule,  HRSRC hRsrc );
+extern int NE_AccessResource( HMODULE16 hModule, HRSRC16 hRsrc );
+extern BOOL NE_FreeResource( HMODULE16 hModule, HGLOBAL16 handle );
+extern HRSRC16 NE_FindResource(HMODULE16 hModule, SEGPTR typeId, SEGPTR resId);
+extern DWORD NE_SizeofResource( HMODULE16 hModule, HRSRC16 hRsrc );
+extern SEGPTR NE_LockResource( HMODULE16 hModule, HGLOBAL16 handle );
+extern HGLOBAL16 NE_AllocResource( HMODULE16 hModule, HRSRC16 hRsrc,
+                                   DWORD size );
+extern HGLOBAL16 NE_LoadResource( HMODULE16 hModule,  HRSRC16 hRsrc );
 
-extern HANDLE SYSRES_LoadResource( SYSTEM_RESOURCE id );
-extern void SYSRES_FreeResource( HANDLE handle );
+extern HGLOBAL16 SYSRES_LoadResource( SYSTEM_RESOURCE id );
+extern void SYSRES_FreeResource( HGLOBAL16 handle );
 
 #endif /* __WINE_RESOURCE_H */
diff --git a/include/selectors.h b/include/selectors.h
index f5e3800..66495c7 100644
--- a/include/selectors.h
+++ b/include/selectors.h
@@ -16,5 +16,6 @@
 extern WORD SELECTOR_ReallocBlock( WORD sel, const void *base, DWORD size,
                                    enum seg_type type, BOOL32 is32bit,
                                    BOOL32 readonly );
+extern void SELECTOR_FreeBlock( WORD sel, WORD count );
 
 #endif /* __WINE_SELECTORS_H */
diff --git a/include/shell.h b/include/shell.h
index 045d2a0..565dbd0 100644
--- a/include/shell.h
+++ b/include/shell.h
@@ -9,7 +9,8 @@
 #include "windows.h"
 #include "winreg.h"
 
-extern INT ShellAbout(HWND hWnd, LPCSTR szApp, LPCSTR szOtherStuff, HICON hIcon);
+extern INT ShellAbout(HWND hWnd, LPCSTR szApp, LPCSTR szOtherStuff,
+                      HICON16 hIcon);
 extern void SHELL_LoadRegistry();
 extern void SHELL_SaveRegistry();
 extern void SHELL_Init();
diff --git a/include/static.h b/include/static.h
index dfe7148..b91fab9 100644
--- a/include/static.h
+++ b/include/static.h
@@ -12,9 +12,9 @@
   /* Extra info for STATIC windows */
 typedef struct
 {
-    HFONT  hFont;   /* Control font (or 0 for system font) */
-    WORD   dummy;   /* Don't know what MS-Windows puts in there */
-    HICON  hIcon;   /* Icon handle for SS_ICON controls */ 
+    HFONT16  hFont;   /* Control font (or 0 for system font) */
+    WORD     dummy;   /* Don't know what MS-Windows puts in there */
+    HICON16  hIcon;   /* Icon handle for SS_ICON controls */ 
 } STATICINFO;
 
 extern LRESULT StaticWndProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam );
diff --git a/include/status.h b/include/status.h
new file mode 100644
index 0000000..424394f
--- /dev/null
+++ b/include/status.h
@@ -0,0 +1,30 @@
+/*
+ * Status window definitions
+ *
+ * Copyright 1996 Bruce Milner
+ */
+
+#ifndef __WINE_STATUS_H
+#define __WINE_STATUS_H
+
+LRESULT StatusWindowProc( HWND32 hwnd, UINT32 msg,
+                          WPARAM32 wParam, LPARAM lParam );
+
+typedef struct
+{
+    INT32	x;
+    INT32	style;
+    RECT32	bound;
+    LPSTR	text;
+} STATUSWINDOWPART;
+
+typedef struct
+{
+    UINT16              numParts;
+    UINT16              textHeight;
+    BOOL32              simple;
+    STATUSWINDOWPART	part0;	/* simple window */
+    STATUSWINDOWPART   *parts;
+} STATUSWINDOWINFO;
+
+#endif  /* __WINE_STATUS_H */
diff --git a/include/stddebug.h b/include/stddebug.h
index fc531a9..8139e9c 100644
--- a/include/stddebug.h
+++ b/include/stddebug.h
@@ -88,6 +88,7 @@
 #undef DEBUG_COMBO
 #undef DEBUG_COMM
 #undef DEBUG_COMMDLG
+#undef DEBUG_CRTDLL
 #undef DEBUG_CURSOR
 #undef DEBUG_DC
 #undef DEBUG_DDE
@@ -165,6 +166,7 @@
 #define DEBUG_COMBO
 #define DEBUG_COMM
 #define DEBUG_COMMDLG
+#define DEBUG_CRTDLL
 #define DEBUG_CURSOR
 #define DEBUG_DC
 #define DEBUG_DDE
diff --git a/include/syscolor.h b/include/syscolor.h
index c1f75c7..a7b5809 100644
--- a/include/syscolor.h
+++ b/include/syscolor.h
@@ -11,27 +11,27 @@
 
 struct SysColorObjects
 {
-    HBRUSH hbrushScrollbar;        /* COLOR_SCROLLBAR           */
-                                   /* COLOR_BACKGROUND          */
-    HBRUSH hbrushActiveCaption;    /* COLOR_ACTIVECAPTION       */
-    HBRUSH hbrushInactiveCaption;  /* COLOR_INACTIVECAPTION     */
-    HBRUSH hbrushMenu;             /* COLOR_MENU                */
-    HBRUSH hbrushWindow;           /* COLOR_WINDOW              */
-    HPEN16 hpenWindowFrame;        /* COLOR_WINDOWFRAME         */
-                                   /* COLOR_MENUTEXT            */
-    HPEN16 hpenWindowText;         /* COLOR_WINDOWTEXT          */
-                                   /* COLOR_CAPTIONTEXT         */
-    HBRUSH hbrushActiveBorder;     /* COLOR_ACTIVEBORDER        */
-    HBRUSH hbrushInactiveBorder;   /* COLOR_INACTIVEBORDER      */
-                                   /* COLOR_APPWORKSPACE        */
-    HBRUSH hbrushHighlight;        /* COLOR_HIGHLIGHT           */
-                                   /* COLOR_HIGHLIGHTTEXT       */
-    HBRUSH hbrushBtnFace;          /* COLOR_BTNFACE             */
-    HBRUSH hbrushBtnShadow;        /* COLOR_BTNSHADOW           */
-                                   /* COLOR_GRAYTEXT            */
-                                   /* COLOR_BTNTEXT             */
-                                   /* COLOR_INACTIVECAPTIONTEXT */
-    HBRUSH hbrushBtnHighlight;     /* COLOR_BTNHIGHLIGHT        */
+    HBRUSH16 hbrushScrollbar;        /* COLOR_SCROLLBAR           */
+                                     /* COLOR_BACKGROUND          */
+    HBRUSH16 hbrushActiveCaption;    /* COLOR_ACTIVECAPTION       */
+    HBRUSH16 hbrushInactiveCaption;  /* COLOR_INACTIVECAPTION     */
+    HBRUSH16 hbrushMenu;             /* COLOR_MENU                */
+    HBRUSH16 hbrushWindow;           /* COLOR_WINDOW              */
+    HPEN16   hpenWindowFrame;        /* COLOR_WINDOWFRAME         */
+                                     /* COLOR_MENUTEXT            */
+    HPEN16   hpenWindowText;         /* COLOR_WINDOWTEXT          */
+                                     /* COLOR_CAPTIONTEXT         */
+    HBRUSH16 hbrushActiveBorder;     /* COLOR_ACTIVEBORDER        */
+    HBRUSH16 hbrushInactiveBorder;   /* COLOR_INACTIVEBORDER      */
+                                     /* COLOR_APPWORKSPACE        */
+    HBRUSH16 hbrushHighlight;        /* COLOR_HIGHLIGHT           */
+                                     /* COLOR_HIGHLIGHTTEXT       */
+    HBRUSH16 hbrushBtnFace;          /* COLOR_BTNFACE             */
+    HBRUSH16 hbrushBtnShadow;        /* COLOR_BTNSHADOW           */
+                                     /* COLOR_GRAYTEXT            */
+                                     /* COLOR_BTNTEXT             */
+                                     /* COLOR_INACTIVECAPTIONTEXT */
+    HBRUSH16 hbrushBtnHighlight;     /* COLOR_BTNHIGHLIGHT        */
 };
 
 extern void SYSCOLOR_Init(void);
diff --git a/include/winbase.h b/include/winbase.h
index 1583f35..536e73f 100644
--- a/include/winbase.h
+++ b/include/winbase.h
@@ -135,28 +135,30 @@
 
 typedef struct
 {
-    DWORD     FileAttributes;
-    FILETIME  CreationTime;
-    FILETIME  LastAccessTime;
-    FILETIME  LastWriteTime;
-    DWORD     FileSizeHigh;
-    DWORD     FileSizeLow;
-    DWORD     reserved[2];
-    CHAR      FileName[260];
-    CHAR      AlternateName[14];
+    DWORD     dwFileAttributes;
+    FILETIME  ftCreationTime;
+    FILETIME  ftLastAccessTime;
+    FILETIME  ftLastWriteTime;
+    DWORD     nFileSizeHigh;
+    DWORD     nFileSizeLow;
+    DWORD     dwReserved0;
+    DWORD     dwReserved1;
+    CHAR      cFileName[260];
+    CHAR      cAlternateFileName[14];
 } WIN32_FIND_DATA32A, *LPWIN32_FIND_DATA32A;
 
 typedef struct
 {
-    DWORD     FileAttributes;
-    FILETIME  CreationTime;
-    FILETIME  LastAccessTime;
-    FILETIME  LastWriteTime;
-    DWORD     FileSizeHigh;
-    DWORD     FileSizeLow;
-    DWORD     reserved[2];
-    WCHAR     FileName[260];
-    WCHAR     AlternateName[14];
+    DWORD     dwFileAttributes;
+    FILETIME  ftCreationTime;
+    FILETIME  ftLastAccessTime;
+    FILETIME  ftLastWriteTime;
+    DWORD     nFileSizeHigh;
+    DWORD     nFileSizeLow;
+    DWORD     dwReserved0;
+    DWORD     dwReserved1;
+    WCHAR     cFileName[260];
+    WCHAR     cAlternateName[14];
 } WIN32_FIND_DATA32W, *LPWIN32_FIND_DATA32W;
 
 DECL_WINELIB_TYPE_AW(WIN32_FIND_DATA);
diff --git a/include/windows.h b/include/windows.h
index 2e6fa9f..d1275cd 100644
--- a/include/windows.h
+++ b/include/windows.h
@@ -1795,6 +1795,7 @@
 #define RT_FONT 	    MAKEINTRESOURCE(8)
 #define RT_ACCELERATOR	    MAKEINTRESOURCE(9)
 #define RT_RCDATA	    MAKEINTRESOURCE(10)
+#define RT_MESSAGELIST      MAKEINTRESOURCE(11)
 #define RT_GROUP_CURSOR     MAKEINTRESOURCE(12)
 #define RT_GROUP_ICON	    MAKEINTRESOURCE(14)
 
@@ -3180,6 +3181,115 @@
         WORD wMilliseconds;
 } SYSTEMTIME, *LPSYSTEMTIME;
 
+
+/* Code page information.
+ */
+typedef struct {
+        DWORD MaxCharSize;
+        BYTE DefaultChar[2];
+        BYTE LeadBytes[5];
+} CPINFO, *LPCPINFO;
+
+/* The 'overlapped' data structure used by async I/O functions.
+ */
+typedef struct {
+        DWORD Internal;
+        DWORD InternalHigh;
+        DWORD Offset;
+        DWORD OffsetHigh;
+        HANDLE32 hEvent;
+} OVERLAPPED, *LPOVERLAPPED;
+
+/* Process startup information.
+ */
+typedef struct {
+        DWORD cb;
+        LPSTR lpReserved;
+        LPSTR lpDesktop;
+        LPSTR lpTitle;
+        DWORD dwX;
+        DWORD dwY;
+        DWORD dwXSize;
+        DWORD dwYSize;
+        DWORD dwXCountChars;
+        DWORD dwYCountChars;
+        DWORD dwFillAttribute;
+        DWORD dwFlags;
+        WORD wShowWindow;
+        WORD cbReserved2;
+        BYTE *lpReserved2;
+        HANDLE32 hStdInput;
+        HANDLE32 hStdOutput;
+        HANDLE32 hStdError;
+} STARTUPINFO, *LPSTARTUPINFO;
+
+typedef struct {
+        LONG Bias;
+        WCHAR StandardName[32];
+        SYSTEMTIME StandardDate;
+        LONG StandardBias;
+        WCHAR DaylightName[32];
+        SYSTEMTIME DaylightDate;
+        LONG DaylightBias;
+} TIME_ZONE_INFORMATION, *LPTIME_ZONE_INFORMATION;
+
+#define TIME_ZONE_ID_UNKNOWN    0
+#define TIME_ZONE_ID_STANDARD   1
+#define TIME_ZONE_ID_DAYLIGHT   2
+
+
+/* File object type definitions
+ */
+#define FILE_TYPE_UNKNOWN       0
+#define FILE_TYPE_DISK          1
+#define FILE_TYPE_CHAR          2
+#define FILE_TYPE_PIPE          3
+#define FILE_TYPE_REMOTE        32768
+
+/* File creation flags
+ */
+#define GENERIC_READ            0x80000000L
+#define GENERIC_WRITE           0x40000000L
+#define CREATE_NEW              1
+#define CREATE_ALWAYS           2
+#define OPEN_EXISTING           3
+#define OPEN_ALWAYS             4
+#define TRUNCATE_EXISTING       5
+
+/* Standard handle identifiers
+ */
+#define STD_INPUT_HANDLE        ((DWORD) -10)
+#define STD_OUTPUT_HANDLE       ((DWORD) -11)
+#define STD_ERROR_HANDLE        ((DWORD) -12)
+
+typedef struct
+{
+  int dwFileAttributes;
+  FILETIME ftCreationTime;
+  FILETIME ftLastAccessTime;
+  FILETIME ftLastWriteTime;
+  int dwVolumeSerialNumber;
+  int nFileSizeHigh;
+  int nFileSizeLow;
+  int nNumberOfLinks;
+  int nFileIndexHigh;
+  int nFileIndexLow;
+} BY_HANDLE_FILE_INFORMATION ;
+
+/* File attribute flags
+ */
+#define FILE_ATTRIBUTE_ARCHIVE          0x0020
+#define FILE_ATTRIBUTE_COMPRESSED       0x0800
+#define FILE_ATTRIBUTE_DIRECTORY        0x0010
+#define FILE_ATTRIBUTE_HIDDEN           0x0002
+#define FILE_ATTRIBUTE_NORMAL           0x0080
+#define FILE_ATTRIBUTE_READONLY         0x0001
+#define FILE_ATTRIBUTE_SYSTEM           0x0004
+#define FILE_ATTRIBUTE_TEMPORARY        0x0100
+#define FILE_ATTRIBUTE_ATOMIC_WRITE     0x0200
+#define FILE_ATTRIBUTE_XACTION_WRITE    0x0400
+
+
 /* WinHelp internal structure */
 typedef struct {
 	WORD size;
@@ -3337,7 +3447,14 @@
 INT32      EnumPropsEx32W(HWND32,PROPENUMPROCEX32W,LPARAM);
 #define    EnumPropsEx WINELIB_NAME_AW(EnumPropsEx)
 BOOL32     EnumThreadWindows(DWORD,WNDENUMPROC32,LPARAM);
+void       ExitProcess(DWORD);
+HRSRC32    FindResourceEx32A(HINSTANCE32,LPCSTR,LPCSTR,WORD);
+HRSRC32    FindResourceEx32W(HINSTANCE32,LPCWSTR,LPCWSTR,WORD);
+#define    FindResourceEx WINELIB_NAME_AW(FindResourceEx)
 BOOL32     FlushFileBuffers(HFILE);
+LPCSTR     GetCommandLine32A();
+LPCWSTR    GetCommandLine32W();
+#define    GetCommandLine WINELIB_NAME_AW(GetCommandLine)
 BOOL32     GetCommTimeouts(HANDLE32,LPCOMMTIMEOUTS);
 DWORD      GetLogicalDrives(void);
 HANDLE32   GetProcessHeap(void);
@@ -3377,6 +3494,7 @@
 BOOL32     SetCommMask(HANDLE32,DWORD);
 BOOL32     SetCommTimeouts(HANDLE32,LPCOMMTIMEOUTS);
 BOOL32     SetBrushOrgEx(HDC32,INT32,INT32,LPPOINT32);
+BOOL32     SetTimeZoneInformation(const LPTIME_ZONE_INFORMATION);
 LPVOID     VirtualAlloc(LPVOID,DWORD,DWORD,DWORD);
 BOOL32     VirtualFree(LPVOID,DWORD,DWORD);
 
@@ -3426,6 +3544,7 @@
 WORD       SetClassWord(HWND32,INT32,WORD);
 INT16      SetDIBits(HDC32,HBITMAP32,UINT32,UINT32,LPCVOID,const BITMAPINFO*,UINT32);
 INT16      SetDIBitsToDevice(HDC32,INT32,INT32,DWORD,DWORD,INT32,INT32,UINT32,UINT32,LPCVOID,const BITMAPINFO*,UINT32);
+void       SetLastError(DWORD); /* FIXME: not 100% sure about that */
 VOID       SetRectRgn(HRGN32,INT32,INT32,INT32,INT32);
 WORD       SetWindowWord(HWND32,INT32,WORD);
 BOOL16     ShowCaret(HWND32);
@@ -3822,6 +3941,9 @@
 BOOL16     GetUpdateRect16(HWND16,LPRECT16,BOOL16);
 BOOL32     GetUpdateRect32(HWND32,LPRECT32,BOOL32);
 #define    GetUpdateRect WINELIB_NAME(GetUpdateRect)
+LONG       GetVersion16(void);
+LONG       GetVersion32(void);
+#define    GetVersion WINELIB_NAME(GetVersion)
 BOOL16     GetViewportExtEx16(HDC16,LPPOINT16);
 BOOL32     GetViewportExtEx32(HDC32,LPPOINT32);
 #define    GetViewportExtEx WINELIB_NAME(GetViewportExtEx)
@@ -4310,6 +4432,8 @@
 
 /* Extra functions that don't exist in the Windows API */
 
+INT32      LoadMessage32A(HINSTANCE32,UINT32,WORD,LPSTR,INT32);
+INT32      LoadMessage32W(HINSTANCE32,UINT32,WORD,LPWSTR,INT32);
 INT32      lstrncmp32A(LPCSTR,LPCSTR,INT32);
 INT32      lstrncmp32W(LPCWSTR,LPCWSTR,INT32);
 INT32      lstrncmpi32A(LPCSTR,LPCSTR,INT32);
@@ -4331,26 +4455,12 @@
 typedef HANDLE32 HANDLE;
 typedef HANDLE32 HBITMAP;
 typedef HANDLE32 HBRUSH;
-typedef HANDLE32 HCURSOR;
 typedef HANDLE32 HDC;
-typedef HANDLE32 HDRVR;
 typedef HANDLE32 HFONT;
-typedef HANDLE32 HGLOBAL;
-typedef HANDLE32 HICON;
 typedef HANDLE32 HINSTANCE;
 typedef HANDLE32 HMENU;
-typedef HANDLE32 HMETAFILE;
-typedef HANDLE32 HMIDI;
-typedef HANDLE32 HMIDIIN;
-typedef HANDLE32 HMIDIOUT;
-typedef HANDLE32 HMMIO;
-typedef HANDLE32 HQUEUE;
 typedef HANDLE32 HRGN;
-typedef HANDLE32 HRSRC;
 typedef HANDLE32 HTASK;
-typedef HANDLE32 HWAVE;
-typedef HANDLE32 HWAVEIN;
-typedef HANDLE32 HWAVEOUT;
 typedef HANDLE32 HWND;
 # else  /* WINELIB32 */
 typedef INT16 INT;
@@ -4360,26 +4470,12 @@
 typedef HANDLE16 HANDLE;
 typedef HANDLE16 HBITMAP;
 typedef HANDLE16 HBRUSH;
-typedef HANDLE16 HCURSOR;
 typedef HANDLE16 HDC;
-typedef HANDLE16 HDRVR;
 typedef HANDLE16 HFONT;
-typedef HANDLE16 HGLOBAL;
-typedef HANDLE16 HICON;
 typedef HANDLE16 HINSTANCE;
 typedef HANDLE16 HMENU;
-typedef HANDLE16 HMETAFILE;
-typedef HANDLE16 HMIDI;
-typedef HANDLE16 HMIDIIN;
-typedef HANDLE16 HMIDIOUT;
-typedef HANDLE16 HMMIO;
-typedef HANDLE16 HQUEUE;
 typedef HANDLE16 HRGN;
-typedef HANDLE16 HRSRC;
 typedef HANDLE16 HTASK;
-typedef HANDLE16 HWAVE;
-typedef HANDLE16 HWAVEIN;
-typedef HANDLE16 HWAVEOUT;
 typedef HANDLE16 HWND;
 # endif  /* WINELIB32 */
 #endif  /* __WINE__ */
@@ -4387,7 +4483,7 @@
 /* Callback function pointers types. */
 
 #ifdef WINELIB
-typedef LONG (*DRIVERPROC)(DWORD, HDRVR, UINT, LPARAM, LPARAM);
+typedef LONG (*DRIVERPROC)(DWORD, HDRVR16, UINT, LPARAM, LPARAM);
 typedef int (*EDITWORDBREAKPROC)(LPSTR lpch, int ichCurrent, int cch,int code);
 #else
 typedef SEGPTR DRIVERPROC;
@@ -4421,23 +4517,23 @@
 INT        CheckMenuItem(HMENU,UINT,UINT);
 BOOL       Chord(HDC,INT,INT,INT,INT,INT,INT,INT,INT);
 BOOL       CloseClipboard(void);
-HMETAFILE  CloseMetaFile(HDC);
+HMETAFILE16 CloseMetaFile(HDC);
 void       CloseSound(void);
 BOOL       CloseWindow(HWND);
 int        ConvertRequest(HWND,LPKANJISTRUCT);
-HMETAFILE  CopyMetaFile(HMETAFILE,LPCSTR);
+HMETAFILE16 CopyMetaFile(HMETAFILE16,LPCSTR);
 INT        CountClipboardFormats(void);
 INT        CountVoiceNotes(INT);
 HBRUSH     CreateBrushIndirect(const LOGBRUSH16*);
 HDC        CreateCompatibleDC(HDC);
-HCURSOR    CreateCursor(HANDLE,INT,INT,INT,INT,const BYTE*,const BYTE*);
+HCURSOR16  CreateCursor(HANDLE,INT,INT,INT,INT,const BYTE*,const BYTE*);
 HANDLE     CreateCursorIconIndirect(HANDLE,CURSORICONINFO*,const BYTE*,const BYTE*);
 HDC        CreateDC(LPCSTR,LPCSTR,LPCSTR,const DEVMODE*);
-HBRUSH     CreateDIBPatternBrush(HGLOBAL,UINT);
+HBRUSH     CreateDIBPatternBrush(HGLOBAL16,UINT);
 HBITMAP    CreateDIBitmap(HDC,BITMAPINFOHEADER*,DWORD,LPVOID,BITMAPINFO*,UINT);
 HBRUSH     CreateHatchBrush(INT,COLORREF);
 HDC        CreateIC(LPCSTR,LPCSTR,LPCSTR,const DEVMODE*);
-HICON      CreateIcon(HINSTANCE,INT,INT,BYTE,BYTE,const BYTE*,const BYTE*);
+HICON16    CreateIcon(HINSTANCE,INT,INT,BYTE,BYTE,const BYTE*,const BYTE*);
 HMENU      CreateMenu(void);
 HDC        CreateMetaFile(LPCSTR);
 HPALETTE16 CreatePalette(const LOGPALETTE*);
@@ -4452,10 +4548,10 @@
 ATOM       DeleteAtom(ATOM);
 BOOL       DeleteDC(HDC);
 BOOL       DeleteMenu(HMENU,UINT,UINT);
-BOOL       DeleteMetaFile(HMETAFILE);
+BOOL       DeleteMetaFile(HMETAFILE16);
 BOOL       DeleteObject(HGDIOBJ16);
-BOOL       DestroyCursor(HCURSOR);
-BOOL       DestroyIcon(HICON);
+BOOL       DestroyCursor(HCURSOR16);
+BOOL       DestroyIcon(HICON16);
 BOOL       DestroyMenu(HMENU);
 BOOL       DestroyWindow(HWND);
 HANDLE     DirectResAlloc(HANDLE,WORD,WORD);
@@ -4465,8 +4561,8 @@
 BOOL       DlgDirSelect(HWND,LPSTR,INT);
 BOOL       DlgDirSelectComboBox(HWND,LPSTR,INT);
 BOOL16     DragDetect(HWND16,POINT16);
-DWORD      DragObject(HWND, HWND, WORD, HANDLE, WORD, HCURSOR);
-BOOL       DrawIcon(HDC,INT,INT,HICON);
+DWORD      DragObject(HWND, HWND, WORD, HANDLE, WORD, HCURSOR16);
+BOOL       DrawIcon(HDC,INT,INT,HICON16);
 void       DrawMenuBar(HWND);
 DWORD      DumpIcon(SEGPTR,WORD*,SEGPTR*,SEGPTR*);
 BOOL       Ellipse(HDC,INT,INT,INT,INT);
@@ -4479,13 +4575,13 @@
 UINT       EnumClipboardFormats(UINT);
 INT        EnumFontFamilies(HDC,LPCSTR,FONTENUMPROC16,LPARAM);
 INT        EnumFonts(HDC,LPCSTR,FONTENUMPROC16,LPARAM);
-BOOL       EnumMetaFile(HDC,HMETAFILE,MFENUMPROC16,LPARAM);
+BOOL       EnumMetaFile(HDC,HMETAFILE16,MFENUMPROC16,LPARAM);
 INT        EnumObjects(HDC,INT,GOBJENUMPROC16,LPARAM);
 INT        Escape(HDC,INT,INT,LPCSTR,LPVOID);
 int        ExcludeClipRect(HDC,short,short,short,short);
 int        ExcludeVisRect(HDC,short,short,short,short);
 BOOL       ExitWindows(DWORD,WORD);
-HICON      ExtractIcon(HINSTANCE,LPCSTR,WORD);
+HICON16    ExtractIcon(HINSTANCE,LPCSTR,WORD);
 void       FatalAppExit(UINT,LPCSTR);
 void       FatalExit(int);
 BOOL       FillRgn(HDC,HRGN,HBRUSH);
@@ -4518,7 +4614,7 @@
 HANDLE     GetCurrentPDB(void);
 DWORD      GetCurrentPosition(HDC);
 DWORD      GetCurrentTime(void);
-HCURSOR    GetCursor(void);
+HCURSOR16  GetCursor(void);
 HDC        GetDC(HWND);
 HDC        GetDCEx(HWND,HRGN,DWORD);
 DWORD      GetDCHook(HDC,FARPROC16*);
@@ -4608,7 +4704,6 @@
 LPINT16    GetThresholdEvent(void);
 int        GetThresholdStatus(void);
 HWND       GetTopWindow(HWND);
-LONG       GetVersion(void);
 DWORD      GetViewportExt(HDC);
 DWORD      GetViewportOrg(HDC);
 BOOL       GetWinDebugInfo(LPWINDEBUGINFO,UINT);
@@ -4656,6 +4751,7 @@
 BOOL       IsMenu(HMENU);
 BOOL       IsTask(HTASK);
 HTASK      IsTaskLocked(void);
+BOOL       IsValidMetaFile(HMETAFILE16);
 BOOL       IsWindowEnabled(HWND);
 BOOL       IsWindowVisible(HWND);
 BOOL       IsZoomed(HWND);
@@ -4730,7 +4826,7 @@
 void       SetConvertHook(BOOL);
 BOOL       SetConvertParams(int,int);
 BOOL32     SetCurrentDirectory(LPCSTR);
-HCURSOR    SetCursor(HCURSOR);
+HCURSOR16  SetCursor(HCURSOR16);
 void       SetCursorPos(short,short);
 BOOL       SetDCHook(HDC,FARPROC16,DWORD);
 void       SetDCState(HDC,HDC);
@@ -4767,7 +4863,7 @@
 WORD       SetSystemPaletteUse(HDC,WORD);
 BOOL       SetSystemPowerState(BOOL, BOOL);
 BOOL       SetSystemTime(const SYSTEMTIME*);
-HQUEUE     SetTaskQueue(HTASK,HQUEUE);
+HQUEUE16   SetTaskQueue(HTASK16,HQUEUE16);
 WORD       SetTextAlign(HDC,WORD);
 short      SetTextCharacterExtra(HDC,short);
 DWORD      SetTextColor(HDC,DWORD);
@@ -4787,7 +4883,7 @@
 void       ShowOwnedPopups(HWND,BOOL);
 void       ShowScrollBar(HWND,WORD,BOOL);
 BOOL       ShowWindow(HWND,int);
-DWORD      SizeofResource(HMODULE16,HRSRC);
+DWORD      SizeofResource(HMODULE16,HRSRC16);
 VOID       Sleep(DWORD); /* Win32 */
 int        StartSound(void);
 int        StopSound(void);
diff --git a/include/wintypes.h b/include/wintypes.h
index 5345511..93a6905 100644
--- a/include/wintypes.h
+++ b/include/wintypes.h
@@ -116,13 +116,13 @@
 typedef HKEY           *LPHKEY;
 typedef HMIXEROBJ      *LPHMIXEROBJ;
 
-/* Special case: a segmented pointer is just a pointer in the library. */
+/* Special case: a segmented pointer is just a pointer in the user's code. */
 
-#ifdef WINELIB
-typedef void* SEGPTR;
-#else  /* WINELIB */
+#ifdef __WINE__
 typedef DWORD SEGPTR;
-#endif /* WINELIB */
+#else
+typedef void* SEGPTR;
+#endif /* __WINE__ */
 
 /* Handle types that exist both in Win16 and Win32. */