Release 970120

Sun Jan 19 11:46:48 1997  Alexandre Julliard  <julliard@lrc.epfl.ch>

	* [loader/module.c]
	Fixed LoadModule() to always call the DLL initialization code.

	* [windows/event.c]
	Moved all the keyboard stuff to windows/keyboard.c

	* [tools/build.c]
	Fixed Win32 register functions.

Sat Jan 18 22:24:41 1997  David Makepeace  <D.Makepeace@mailbox.uq.oz.au>

        * [tools/makedep.c]
        Fixed bug which causes SEGV on Solaris x86.

Fri Jan 17 18:32:27 1997  Frans van Dorsselaer <dorssel@rulhmpc49.LeidenUniv.nl>

	* [controls/edit.c]
	Implemented WM_UNDO, WM_CONTEXTMENU (temporary using WM_RBUTTONUP),
	WM_COMMAND, WM_INITPOPUPMENU, WM_SYSKEYDOWN.
	Fixed EM_SETSEL and some minor bugs (features).
	Hence: fully functional undo and a win95 menu with the right mouse
		button.

	* [include/resources.h] [resources/TODO] [resources/sysres_??.rc]
	Added a context menu for the edit control.
	Translations, please ...

Fri Jan	17 08:29:52 1997  David Faure <david.faure@ifhamy.insa-lyon.fr>

	* [windows/event.c]
	Move EVENT_ToAscii to windows/keyboard.c (where name ToAscii)
	Fixed Keypad keys 0-9 and . in EVENT_event_to_vkey.
	Added 3-state handling of toggle keys (CapsLock, NumLock) in order
	to make them work with any X server.
	Toggle keys now generate WM_KEYDOWN and WM_KEYUP on each pressing.

	* [include/keyboard.h]
	Totally replaced the file (formerly containing the vkcase definitions)
	by the declaration of 'extern' variables contained by event.c and used
	by keyboard.c
	
	* [windows/keyboard.c]
	Started to rewrite VkKeyScan and MapVirtualKey, to make them use the 
	table keyc2vkey or X functions only.
	ToAscii : added keypad 0-9 and . special case.
	Changed toggle keys active mask from 0x80 to 0x1.

	* [misc/keyboard.c]
	File deleted. Contents moved to windows/keyboard.c.

	* [misc/main.c]
	Added putenv XKB_DISABLE to disable XKB extension (which, when
	present, causes AltGr to change keyboard group instead of being a
	modifier).

Tue Jan 14 22:56:43 1997  Philippe De Muyter  <phdm@info.ucl.ac.be>

	* [windows/event.c]
	Do not assume NumLockMask is Mod2Mask, but compute it by scanning
	output of XGetModifierMapping for XK_Num_Lock.

Tue Jan 14 15:49:49 1997  Marcus Meissner <msmeissn@cip.informatik.uni-erlangen.de>

	* [loader/pe_*.c] [include/peexe.h] [include/resource32.h]
	  [debugger/*.c]
	General clean up.
	Changed defines/structures to match Windows NT SDK.

	* [loader/main.c]
	Don't crash on empty command-line.

	* [windows/winpos.c]
	winpos.c made win32 clean.

	* [misc/ntdll.c]
	Some string conversion additions.

	* [files/file.c]
	GetFileAttributes/GetTempFileName fixed.

	* [misc/ver.c]
	VerInstallFile implemented.

Mon Jan 13 15:03:11 1997  Philippe De Muyter  <phdm@info.ucl.ac.be>

	* [tools/build.c]: Use PREFIX also in stabs messages.

Mon Jan 13 10:40:33 1997  John Harvey <john@division.co.uk>

	* [graphics/win16drv/*] [include/win16drv.h]
	Many fixes and some new features.

	* [graphics/x11drv/font.c] [graphics/x11drv/init.c]
	  [include/x11drv.h] [objects/font.c]
	GetTextMetrics() moved to graphics driver.

	* [if1632/gdi.spec] [misc/fontengine.c] [misc/Makefile.in]
	New dummy EngineEnumerateFont, EngineRealizeFont functions.

	* [include/windows.h]
	TEXTFORM16 and FONTINFO16 structure definitions moved here from
	include/win16drv.h
diff --git a/include/debugger.h b/include/debugger.h
index 13779d0..91f5121 100644
--- a/include/debugger.h
+++ b/include/debugger.h
@@ -167,9 +167,9 @@
 struct expr * DEBUG_StructExpr(struct expr *, const char * element);
 struct expr * DEBUG_ArrayExpr(struct expr *, struct expr * index);
 struct expr * DEBUG_CallExpr(const char *, int nargs, ...);
+struct expr * DEBUG_TypeCastExpr(struct datatype *, struct expr *);
 extern   int  DEBUG_ExprValue(DBG_ADDR *, unsigned int *);
 DBG_ADDR DEBUG_EvalExpr(struct expr *);
-extern int DEBUG_AddDisplay(struct expr * exp);
 extern int DEBUG_DelDisplay(int displaynum);
 extern struct expr * DEBUG_CloneExpr(struct expr * exp);
 extern int DEBUG_FreeExpr(struct expr * exp);
@@ -180,7 +180,7 @@
 
   /* debugger/display.c */
 extern int DEBUG_DoDisplay(void);
-extern int DEBUG_AddDisplay(struct expr * exp);
+extern int DEBUG_AddDisplay(struct expr * exp, int count, char format);
 extern int DEBUG_DoDisplay(void);
 extern int DEBUG_DelDisplay(int displaynum);
 extern int DEBUG_InfoDisplay(void);
@@ -273,6 +273,7 @@
 extern void DEBUG_InitCVDataTypes(void);
 
   /* debugger/types.c */
+extern int DEBUG_nchar;
 extern void DEBUG_InitTypes(void);
 extern struct datatype * DEBUG_NewDataType(enum debug_type xtype, 
 					   const char * typename);
@@ -296,7 +297,9 @@
 extern int DEBUG_SetBitfieldParams(struct datatype * dt, int offset, 
 				   int nbits, struct datatype * dt2);
 extern int DEBUG_CopyFieldlist(struct datatype * dt, struct datatype * dt2);
-
+extern enum debug_type DEBUG_GetType(struct datatype * dt);
+extern struct datatype * DEBUG_TypeCast(enum debug_type, const char *);
+extern int DEBUG_PrintTypeCast(struct datatype *);
 
   /* debugger/source.c */
 extern void DEBUG_ShowDir(void);
diff --git a/include/keyboard.h b/include/keyboard.h
index 95f681c..9465e3c 100644
--- a/include/keyboard.h
+++ b/include/keyboard.h
@@ -1,32 +1,19 @@
 /*
- * Keyboard definitions
+ * Keyboard header file
+ * Copyright 1997 David Faure
  *
  */
 
 #ifndef __WINE_KEYBOARD_H
 #define __WINE_KEYBOARD_H
 
-#define WINE_VKEY_MAPPINGS\
-		vkcase('!', '1')\
-		vkcase('@', '2')\
-		vkcase('#', '3')\
-		vkcase('$', '4')\
-		vkcase('%', '5')\
-		vkcase('^', '6')\
-		vkcase('&', '7')\
-		vkcase('*', '8')\
-		vkcase('(', '9')\
-		vkcase(')', '0')\
-		vkcase2('`', '~', 0xc0)\
-		vkcase2('-', '_', 0xbd)\
-		vkcase2('=', '+', 0xbb)\
-		vkcase2('[', '{', 0xdb)\
-		vkcase2(']', '}', 0xdd)\
-		vkcase2(';', ':', 0xba)\
-		vkcase2('\'', '"', 0xde)\
-		vkcase2(',', '<', 0xbc)\
-		vkcase2('.', '>', 0xbe)\
-		vkcase2('/', '?', 0xbf)\
-		vkcase2('\\', '|', 0xdc)
+extern BOOL32 MouseButtonsStates[3];
+extern BOOL32 AsyncMouseButtonsStates[3];
+extern BYTE InputKeyStateTable[256];
+extern BYTE QueueKeyStateTable[256];
+extern BYTE AsyncKeyStateTable[256];
+
+extern BOOL32 KEYBOARD_Init(void);
+extern void KEYBOARD_HandleEvent( XKeyEvent *event );
 
 #endif  /* __WINE_KEYBOARD_H */
diff --git a/include/module.h b/include/module.h
index 3b52039..953cdfb 100644
--- a/include/module.h
+++ b/include/module.h
@@ -120,6 +120,7 @@
 extern HMODULE16 MODULE_FindModule( LPCSTR path );
 extern HINSTANCE16 MODULE_GetInstance( HMODULE16 hModule );
 extern HMODULE16 MODULE_CreateDummyModule( const OFSTRUCT *ofs );
+extern HINSTANCE16 MODULE_Load( LPCSTR name, LPVOID paramBlock, BOOL32 first );
 extern WORD MODULE_GetOrdinal( HMODULE16 hModule, const char *name );
 extern FARPROC16 MODULE_GetEntryPoint( HMODULE16 hModule, WORD ordinal );
 extern BOOL16 MODULE_SetEntryPoint( HMODULE16 hModule, WORD ordinal,
diff --git a/include/pe_image.h b/include/pe_image.h
index 1336fff..1130ba8 100644
--- a/include/pe_image.h
+++ b/include/pe_image.h
@@ -3,14 +3,16 @@
 
 #include <sys/types.h>
 #include "windows.h"
+#include "winnt.h"
+#include "peexe.h"
 
 struct pe_data {
-	struct pe_header_s *pe_header;
-	struct pe_segment_table *pe_seg;
-	struct PE_Import_Directory *pe_import;
-	struct PE_Export_Directory *pe_export;
-	struct PE_Resource_Directory *pe_resource;
-	struct PE_Reloc_Block *pe_reloc;
+	LPIMAGE_NT_HEADERS			pe_header;
+	LPIMAGE_SECTION_HEADER			pe_seg;
+	LPIMAGE_IMPORT_DESCRIPTOR		pe_import;
+	LPIMAGE_EXPORT_DIRECTORY		pe_export;
+	LPIMAGE_RESOURCE_DIRECTORY		pe_resource;
+	LPIMAGE_BASE_RELOCATION			pe_reloc;
 	int base_addr;
 	int load_addr;
 	int vma_size;
diff --git a/include/peexe.h b/include/peexe.h
index ca46e97..c75450c 100644
--- a/include/peexe.h
+++ b/include/peexe.h
@@ -5,18 +5,17 @@
 #define __WINE_PEEXE_H
 
 
+typedef struct _IMAGE_FILE_HEADER {
+	WORD	Machine;
+	WORD	NumberOfSections;
+	DWORD	TimeDateStamp;
+	DWORD	PointerToSymbolTable;
+	DWORD	NumberOfSymbols;
+	WORD	SizeOfOptionalHeader;
+	WORD	Characteristics;
+} IMAGE_FILE_HEADER,*LPIMAGE_FILE_HEADER;
 
-struct coff_header
-{
-	u_short Machine;
-	u_short NumberOfSections;
-        u_long TimeDateStamp;
-        u_long PointerToSymbolTable;
-        u_long NumberOfSymbols;
-        u_short SizeOfOptionalHeader;
-        u_short Characteristics;
-};
-
+#define	IMAGE_SIZEOF_FILE_HEADER	20
 
 /* These defines describe the meanings of the bits in the Characteristics
    field */
@@ -34,194 +33,343 @@
 #define IMAGE_FILE_BYTES_REVERSED_HI	0x8000
 
 /* These are the settings of the Machine field. */
-#define IMAGE_FILE_MACHINE_UNKNOWN 0
-#define IMAGE_FILE_MACHINE_I860    0x14d
-#define IMAGE_FILE_MACHINE_I386    0x14c
-#define IMAGE_FILE_MACHINE_R3000	0x162
-#define IMAGE_FILE_MACHINE_R4000	0x166
-#define IMAGE_FILE_MACHINE_ALPHA	0x184
+#define	IMAGE_FILE_MACHINE_UNKNOWN	0
+#define	IMAGE_FILE_MACHINE_I860		0x14d
+#define	IMAGE_FILE_MACHINE_I386		0x14c
+#define	IMAGE_FILE_MACHINE_R3000	0x162
+#define	IMAGE_FILE_MACHINE_R4000	0x166
+#define	IMAGE_FILE_MACHINE_R10000	0x168
+#define	IMAGE_FILE_MACHINE_ALPHA	0x184
+#define	IMAGE_FILE_MACHINE_POWERPC	0x1F0  
 
-struct Directory
+typedef struct _IMAGE_DATA_DIRECTORY
 {
-  u_long Virtual_address;
-  u_long Size;
-};
+	DWORD	VirtualAddress;
+	DWORD	Size;
+} IMAGE_DATA_DIRECTORY,*LPIMAGE_DATA_DIRECTORY;
 
+#define	IMAGE_NUMBEROF_DIRECTORY_ENTRIES 16
 
 /* Optional coff header - used by NT to provide additional information. */
-
-struct ocoffhdr
+typedef struct _IMAGE_OPTIONAL_HEADER
 {
-	u_short Magic;  		/* Good old COFF magic 0413 */
-	u_char MajorLinkerVersion;
-	u_char MinorLinkerVersion;
-	u_long SizeOfCode;
-	u_long SizeOfInitializedData;
-	u_long SizeOfUninitializedData;
-	u_long AddressOfEntryPoint;
-	u_long BaseOfCode;
-	u_long BaseOfData;
-	u_long BaseOfImage;
-	u_long SectionAlignment;
-	u_long FileAlignment;
-	u_short MajorOperatingSystemVersion;
-	u_short MinorOperatingSystemVersion;
-	u_short MajorImageVersion;
-	u_short MinorImageVersion;
-	u_short MajorSubsystemVersion;
-	u_short MinorSubsystemVersion;
-	u_long Unknown1;
-	u_long SizeOfImage;
-	u_long SizeOfHeaders;
-	u_long CheckSum;
-	u_short Subsystem;
-	u_short DllCharacteristics;
-	u_long SizeOfStackReserve;
-	u_long SizeOfStackCommit;
-	u_long SizeOfHeapReserve;
-	u_long SizeOfHeapCommit;
-	u_long LoaderFlags;
-	u_long NumberOfRvaAndSizes;
-	struct Directory DataDirectory[16];
-};
+	/*
+	 * Standard fields.
+	 */
+
+	WORD	Magic;
+	BYTE	MajorLinkerVersion;
+	BYTE	MinorLinkerVersion;
+	DWORD	SizeOfCode;
+	DWORD	SizeOfInitializedData;
+	DWORD	SizeOfUninitializedData;
+	DWORD	AddressOfEntryPoint;
+	DWORD	BaseOfCode;
+	DWORD	BaseOfData;
+
+	/*
+	 * NT additional fields.
+	 */
+
+	DWORD	ImageBase;
+	DWORD	SectionAlignment;
+	DWORD	FileAlignment;
+	WORD	MajorOperatingSystemVersion;
+	WORD	MinorOperatingSystemVersion;
+	WORD	MajorImageVersion;
+	WORD	MinorImageVersion;
+	WORD	MajorSubsystemVersion;
+	WORD	MinorSubsystemVersion;
+	DWORD	Reserved1;
+	DWORD	SizeOfImage;
+	DWORD	SizeOfHeaders;
+	DWORD	CheckSum;
+	WORD	Subsystem;
+	WORD	DllCharacteristics;
+	DWORD	SizeOfStackReserve;
+	DWORD	SizeOfStackCommit;
+	DWORD	SizeOfHeapReserve;
+	DWORD	SizeOfHeapCommit;
+	DWORD	LoaderFlags;
+	DWORD	NumberOfRvaAndSizes;
+	IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES];
+} IMAGE_OPTIONAL_HEADER,*LPIMAGE_OPTIONAL_HEADER;
 
 /* These are indexes into the DataDirectory array */
-#define IMAGE_FILE_EXPORT_DIRECTORY 0
-#define IMAGE_FILE_IMPORT_DIRECTORY 1
-#define IMAGE_FILE_RESOURCE_DIRECTORY 2
-#define IMAGE_FILE_EXCEPTION_DIRECTORY 3
-#define IMAGE_FILE_SECURITY_DIRECTORY 4
-#define IMAGE_FILE_BASE_RELOCATION_TABLE 5
-#define IMAGE_FILE_DEBUG_DIRECTORY 6
-#define IMAGE_FILE_DESCRIPTION_STRING 7
-#define IMAGE_FILE_MACHINE_VALUE 8  /* Mips */
-#define IMAGE_FILE_THREAD_LOCAL_STORAGE 9
-#define IMAGE_FILE_CALLBACK_DIRECTORY 10
+#define IMAGE_FILE_EXPORT_DIRECTORY		0
+#define IMAGE_FILE_IMPORT_DIRECTORY		1
+#define IMAGE_FILE_RESOURCE_DIRECTORY		2
+#define IMAGE_FILE_EXCEPTION_DIRECTORY		3
+#define IMAGE_FILE_SECURITY_DIRECTORY		4
+#define IMAGE_FILE_BASE_RELOCATION_TABLE	5
+#define IMAGE_FILE_DEBUG_DIRECTORY		6
+#define IMAGE_FILE_DESCRIPTION_STRING		7
+#define IMAGE_FILE_MACHINE_VALUE		8  /* Mips */
+#define IMAGE_FILE_THREAD_LOCAL_STORAGE		9
+#define IMAGE_FILE_CALLBACK_DIRECTORY		10
 
-struct pe_header_s
-{
-	char magic[4];  /* Must be 'P', 'E', 0, 0 */
-	struct coff_header coff;
-	struct ocoffhdr    opt_coff;
-};
+/* Directory Entries, indices into the DataDirectory array */
 
+#define	IMAGE_DIRECTORY_ENTRY_EXPORT		0
+#define	IMAGE_DIRECTORY_ENTRY_IMPORT		1
+#define	IMAGE_DIRECTORY_ENTRY_RESOURCE		2
+#define	IMAGE_DIRECTORY_ENTRY_EXCEPTION		3
+#define	IMAGE_DIRECTORY_ENTRY_SECURITY		4
+#define	IMAGE_DIRECTORY_ENTRY_BASERELOC		5
+#define	IMAGE_DIRECTORY_ENTRY_DEBUG		6
+#define	IMAGE_DIRECTORY_ENTRY_COPYRIGHT		7
+#define	IMAGE_DIRECTORY_ENTRY_GLOBALPTR		8   /* (MIPS GP) */
+#define	IMAGE_DIRECTORY_ENTRY_TLS		9
+#define	IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG	10
+#define	IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT	11
+#define	IMAGE_DIRECTORY_ENTRY_IAT		12  /* Import Address Table */
 
-struct pe_segment_table
-{
-  u_char Name[8];
-  u_long Virtual_Size;
-  u_long Virtual_Address;
-  u_long Size_Of_Raw_Data;
-  u_long   PointerToRawData;
-  u_long   PointerToRelocations;
-  u_long   PointerToLinenumbers;
-  u_short  NumberOfRelocations;
-  u_short  NumberOfLinenumbers;
-  u_long   Characteristics;
-};
+/* Subsystem Values */
+
+#define	IMAGE_SUBSYSTEM_UNKNOWN		0
+#define	IMAGE_SUBSYSTEM_NATIVE		1
+#define	IMAGE_SUBSYSTEM_WINDOWS_GUI	2	/* Windows GUI subsystem */
+#define	IMAGE_SUBSYSTEM_WINDOWS_CUI	3	/* Windows character subsystem*/
+#define	IMAGE_SUBSYSTEM_OS2_CUI		5
+#define	IMAGE_SUBSYSTEM_POSIX_CUI	7
+
+typedef struct _IMAGE_NT_HEADERS {
+	DWORD			Signature;
+	IMAGE_FILE_HEADER	FileHeader;
+	IMAGE_OPTIONAL_HEADER	OptionalHeader;
+} IMAGE_NT_HEADERS,*LPIMAGE_NT_HEADERS;
+
+/* Section header format */
+
+#define	IMAGE_SIZEOF_SHORT_NAME	8
+
+typedef struct _IMAGE_SECTION_HEADER {
+	BYTE	Name[IMAGE_SIZEOF_SHORT_NAME];
+	union {
+		DWORD	PhysicalAddress;
+		DWORD	VirtualSize;
+	} Misc;
+	DWORD	VirtualAddress;
+	DWORD	SizeOfRawData;
+	DWORD	PointerToRawData;
+	DWORD	PointerToRelocations;
+	DWORD	PointerToLinenumbers;
+	WORD	NumberOfRelocations;
+	WORD	NumberOfLinenumbers;
+	DWORD	Characteristics;
+} IMAGE_SECTION_HEADER,*LPIMAGE_SECTION_HEADER;
+
+#define	IMAGE_SIZEOF_SECTION_HEADER 40
 
 /* These defines are for the Characteristics bitfield. */
+/* #define IMAGE_SCN_TYPE_REG			0x00000000 - Reserved */
+/* #define IMAGE_SCN_TYPE_DSECT			0x00000001 - Reserved */
+/* #define IMAGE_SCN_TYPE_NOLOAD		0x00000002 - Reserved */
+/* #define IMAGE_SCN_TYPE_GROUP			0x00000004 - Reserved */
+/* #define IMAGE_SCN_TYPE_NO_PAD		0x00000008 - Reserved */
+/* #define IMAGE_SCN_TYPE_COPY			0x00000010 - Reserved */
 
-#define IMAGE_SCN_TYPE_CNT_CODE 0x20
-#define IMAGE_SCN_TYPE_CNT_INITIALIZED_DATA 0x40
-#define IMAGE_SCN_TYPE_CNT_UNINITIALIZED_DATA 0x80
-#define IMAGE_SCN_MEM_DISCARDABLE  0x2000000
-#define IMAGE_SCN_MEM_SHARED 	  0x10000000
-#define IMAGE_SCN_MEM_EXECUTE	  0x20000000
-#define IMAGE_SCN_MEM_READ	  0x40000000
-#define IMAGE_SCN_MEM_WRITE	  0x80000000
+#define IMAGE_SCN_CNT_CODE			0x00000020
+#define IMAGE_SCN_CNT_INITIALIZED_DATA		0x00000040
+#define IMAGE_SCN_CNT_UNINITIALIZED_DATA	0x00000080
 
-/*
- * Import module directory stuff
- */
+#define	IMAGE_SCN_LNK_OTHER			0x00000100 
+#define	IMAGE_SCN_LNK_INFO			0x00000200  
+/* #define	IMAGE_SCN_TYPE_OVER		0x00000400 - Reserved */
+#define	IMAGE_SCN_LNK_REMOVE			0x00000800
+#define	IMAGE_SCN_LNK_COMDAT			0x00001000
 
-struct PE_Import_Directory
-{
-  u_int Import_List;
-  u_int TimeDate;
-  u_int Forwarder;
-  u_int ModuleName;
-  u_int Thunk_List;
-};
+/* 						0x00002000 - Reserved */
+/* #define IMAGE_SCN_MEM_PROTECTED 		0x00004000 - Obsolete */
+#define	IMAGE_SCN_MEM_FARDATA			0x00008000
 
-struct pe_import_name
-{
-  u_short Hint;
-  u_char Name[1];
-};
+/* #define IMAGE_SCN_MEM_SYSHEAP		0x00010000 - Obsolete */
+#define	IMAGE_SCN_MEM_PURGEABLE			0x00020000
+#define	IMAGE_SCN_MEM_16BIT			0x00020000
+#define	IMAGE_SCN_MEM_LOCKED			0x00040000
+#define	IMAGE_SCN_MEM_PRELOAD			0x00080000
 
-/*
- * Export module directory stuff
- */
+#define	IMAGE_SCN_ALIGN_1BYTES			0x00100000
+#define	IMAGE_SCN_ALIGN_2BYTES			0x00200000
+#define	IMAGE_SCN_ALIGN_4BYTES			0x00300000
+#define	IMAGE_SCN_ALIGN_8BYTES			0x00400000
+#define	IMAGE_SCN_ALIGN_16BYTES			0x00500000  /* Default */
+#define IMAGE_SCN_ALIGN_32BYTES			0x00600000
+#define IMAGE_SCN_ALIGN_64BYTES			0x00700000
+/* 						0x00800000 - Unused */
 
-struct PE_Export_Directory
-{
-  u_long Characteristics;
-  u_long TimeDateStamp;
-  u_short Major_version;
-  u_short Minor_version;
-  u_long Name;
-  u_long Base;
-  u_long Number_Of_Functions;
-  u_long Number_Of_Names;
-  u_long * AddressOfFunctions;
-  u_long * AddressOfNames;
-  u_short * Address_Of_Name_Ordinals;
+#define IMAGE_SCN_LNK_NRELOC_OVFL		0x01000000
+
+
+#define IMAGE_SCN_MEM_DISCARDABLE		0x02000000
+#define IMAGE_SCN_MEM_NOT_CACHED		0x04000000
+#define IMAGE_SCN_MEM_NOT_PAGED			0x08000000
+#define IMAGE_SCN_MEM_SHARED			0x10000000
+#define IMAGE_SCN_MEM_EXECUTE			0x20000000
+#define IMAGE_SCN_MEM_READ			0x40000000
+#define IMAGE_SCN_MEM_WRITE			0x80000000
+
+
+/* Import name entry */
+typedef struct _IMAGE_IMPORT_BY_NAME {
+	WORD	Hint;
+	BYTE	Name[1];
+} IMAGE_IMPORT_BY_NAME,*LPIMAGE_IMPORT_BY_NAME;
+
+/* Import thunk */
+typedef struct _IMAGE_THUNK_DATA {
+	union {
+		LPBYTE	ForwarderString;
+		LPDWORD	Function;
+		DWORD	Ordinal;
+		LPIMAGE_IMPORT_BY_NAME	AddressOfData;
+	} u1;
+} IMAGE_THUNK_DATA,*LPIMAGE_THUNK_DATA;
+
+/* Import module directory */
+
+typedef struct _IMAGE_IMPORT_DESCRIPTOR {
+	union {
+		DWORD	Characteristics; /* 0 for terminating null import descriptor  */
+		LPIMAGE_THUNK_DATA OriginalFirstThunk;	/* RVA to original unbound IAT */
+	} u;
+	DWORD	TimeDateStamp;	/* 0 if not bound,
+				 * -1 if bound, and real date\time stamp
+				 *    in IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT
+				 * (new BIND)
+				 * otherwise date/time stamp of DLL bound to
+				 * (Old BIND)
+				 */
+	DWORD	ForwarderChain;	/* -1 if no forwarders */
+	DWORD	Name;
+	/* RVA to IAT (if bound this IAT has actual addresses) */
+	LPIMAGE_THUNK_DATA FirstThunk;	
+} IMAGE_IMPORT_DESCRIPTOR,*LPIMAGE_IMPORT_DESCRIPTOR;
+
+#define	IMAGE_ORDINAL_FLAG		0x80000000
+#define	IMAGE_SNAP_BY_ORDINAL(Ordinal)	((Ordinal & IMAGE_ORDINAL_FLAG) != 0)
+#define	IMAGE_ORDINAL(Ordinal)		(Ordinal & 0xffff)
+
+/* Export module directory */
+
+typedef struct _IMAGE_EXPORT_DIRECTORY {
+	DWORD	Characteristics;
+	DWORD	TimeDateStamp;
+	WORD	MajorVersion;
+	WORD	MinorVersion;
+	DWORD	Name;
+	DWORD	Base;
+	DWORD	NumberOfFunctions;
+	DWORD	NumberOfNames;
+	LPDWORD	*AddressOfFunctions;
+	LPDWORD	*AddressOfNames;
+	LPWORD	*AddressOfNameOrdinals;
 /*  u_char ModuleName[1]; */
-};
+} IMAGE_EXPORT_DIRECTORY,*LPIMAGE_EXPORT_DIRECTORY;
+
 
 /*
  * Resource directory stuff
  */
+typedef struct _IMAGE_RESOURCE_DIRECTORY {
+	DWORD	Characteristics;
+	DWORD	TimeDateStamp;
+	WORD	MajorVersion;
+	WORD	MinorVersion;
+	WORD	NumberOfNamedEntries;
+	WORD	NumberOfIdEntries;
+	/*  IMAGE_RESOURCE_DIRECTORY_ENTRY DirectoryEntries[]; */
+} IMAGE_RESOURCE_DIRECTORY,*LPIMAGE_RESOURCE_DIRECTORY;
 
-struct PE_Resource_Directory
+#define	IMAGE_RESOURCE_NAME_IS_STRING		0x80000000
+#define	IMAGE_RESOURCE_DATA_IS_DIRECTORY	0x80000000
+
+typedef struct _IMAGE_RESOURCE_DIRECTORY_ENTRY {
+	union {
+		struct {
+			DWORD NameOffset:31;
+			DWORD NameIsString:1;
+		} s;
+		DWORD   Name;
+		WORD    Id;
+	} u1;
+	union {
+		DWORD   OffsetToData;
+		struct {
+			DWORD   OffsetToDirectory:31;
+			DWORD   DataIsDirectory:1;
+		} s;
+	} u2;
+} IMAGE_RESOURCE_DIRECTORY_ENTRY,*LPIMAGE_RESOURCE_DIRECTORY_ENTRY;
+
+
+typedef struct _IMAGE_RESOURCE_DIRECTORY_STRING {
+	WORD	Length;
+	CHAR	NameString[ 1 ];
+} IMAGE_RESOURCE_DIRECTORY_STRING,*LPIMAGE_RESOURCE_DIRECTORY_STRING;
+
+typedef struct _IMAGE_RESOURCE_DIR_STRING_U {
+	WORD	Length;
+	WCHAR	NameString[ 1 ];
+} IMAGE_RESOURCE_DIR_STRING_U,*LPIMAGE_RESOURCE_DIR_STRING_U;
+
+typedef struct _IMAGE_RESOURCE_DATA_ENTRY {
+	DWORD	OffsetToData;
+	DWORD	Size;
+	DWORD	CodePage;
+	DWORD	Reserved;
+} IMAGE_RESOURCE_DATA_ENTRY,*LPIMAGE_RESOURCE_DATA_ENTRY;
+
+typedef struct _IMAGE_BASE_RELOCATION
 {
-  u_long Characteristics;
-  u_long TimeDateStamp;
-  u_short MajorVersion;
-  u_short MinorVersion;
-  u_short NumberOfNamedEntries;
-  u_short NumberOfIdEntries;
-};
+	DWORD	VirtualAddress;
+	DWORD	SizeOfBlock;
+	WORD	TypeOffset[1];
+} IMAGE_BASE_RELOCATION,*LPIMAGE_BASE_RELOCATION;
 
-struct PE_Directory_Entry
-{
-  u_long Name;
-  u_long OffsetToData;
-};
+typedef struct _IMAGE_DEBUG_DIRECTORY {
+	DWORD	Characteristics;
+	DWORD	TimeDateStamp;
+	WORD	MajorVersion;
+	WORD	MinorVersion;
+	DWORD	Type;
+	DWORD	SizeOfData;
+	DWORD	AddressOfRawData;
+	DWORD	PointerToRawData;
+} IMAGE_DEBUG_DIRECTORY,*LPIMAGE_DEBUG_DIRECTORY;
 
-struct PE_Directory_Name_String
-{
-  u_short Length;
-  char NameString[1];
-};
+typedef struct _IMAGE_LOAD_CONFIG_DIRECTORY {
+	DWORD	Characteristics;
+	DWORD	TimeDateStamp;
+	WORD	MajorVersion;
+	WORD	MinorVersion;
+	DWORD	GlobalFlagsClear;
+	DWORD	GlobalFlagsSet;
+	DWORD	CriticalSectionDefaultTimeout;
+	DWORD	DeCommitFreeBlockThreshold;
+	DWORD	DeCommitTotalFreeThreshold;
+	LPVOID	LockPrefixTable;
+	DWORD	MaximumAllocationSize;
+	DWORD	VirtualMemoryThreshold;
+	DWORD	ProcessHeapFlags;
+	DWORD	Reserved[ 4 ];
+} IMAGE_LOAD_CONFIG_DIRECTORY,*LPIMAGE_LOAD_CONFIG_DIRECTORY;
 
-struct PE_Directory_Name_String_U
-{
-  u_short Length;
-  u_short NameString[1];
-};
+typedef VOID (*LPIMAGE_TLS_CALLBACK)(
+	LPVOID DllHandle,DWORD Reason,LPVOID Reserved
+);
 
-struct PE_Resource_Leaf_Entry
-{
-  u_long OffsetToData;
-  u_long Size;
-  u_long CodePage;
-  u_long Reserved;
-};
-
-#define IMAGE_RESOURCE_NAME_IS_STRING    0x80000000
-#define IMAGE_RESOURCE_DATA_IS_DIRECTORY 0x80000000
-
-struct PE_Reloc_Block
-{
-	u_long PageRVA;
-	u_long BlockSize;
-	short Relocations[1];
-};
+typedef struct _IMAGE_TLS_DIRECTORY {
+	DWORD	StartAddressOfRawData;
+	DWORD	EndAddressOfRawData;
+	LPDWORD	AddressOfIndex;
+	LPIMAGE_TLS_CALLBACK *AddressOfCallBacks;
+	DWORD	SizeOfZeroFill;
+	DWORD	Characteristics;
+} IMAGE_TLS_DIRECTORY,*LPIMAGE_TLS_DIRECTORY;
 
 /*
- * The IMAGE_FILE_DEBUG_DIRECTORY data directory points to an array of
+ * The IMAGE_DEBUG_DIRECTORY data directory points to an array of
  * these structures.
  */
 struct PE_Debug_dir
@@ -245,30 +393,37 @@
 #define IMAGE_DEBUG_TYPE_CODEVIEW	2
 #define IMAGE_DEBUG_TYPE_FPO		3
 #define IMAGE_DEBUG_TYPE_MISC		4
+#define IMAGE_DEBUG_TYPE_EXCEPTION	5
+#define IMAGE_DEBUG_TYPE_FIXUP		6
+#define IMAGE_DEBUG_TYPE_OMAP_TO_SRC	7
+#define IMAGE_DEBUG_TYPE_OMAP_FROM_SRC	8
+
 
 #define IMAGE_REL_BASED_ABSOLUTE 		0
 #define IMAGE_REL_BASED_HIGH			1
-#define IMAGE_REL_BASED_LOW				2
+#define IMAGE_REL_BASED_LOW			2
 #define IMAGE_REL_BASED_HIGHLOW			3
 #define IMAGE_REL_BASED_HIGHADJ			4
-#define IMAGE_REL_BASED_MIPS_JMPADDR	5
+#define IMAGE_REL_BASED_MIPS_JMPADDR		5
 
 /*
  * This is the structure that appears at the very start of a .DBG file.
  */
-struct PE_DBG_FileHeader {
-    unsigned short int Signature;
-    unsigned short int Flags;
-    unsigned short int Machine;
-    unsigned short int Characteristics;
-    unsigned int       TimeDateStamp;
-    unsigned int       CheckSum;
-    unsigned int       ImageBase;
-    unsigned int       SizeOfImage;
-    unsigned int       NumberOfSections;
-    unsigned int       ExportedNamesSize;
-    unsigned int       DebugDirectorySize;
-    unsigned int       Reserved[ 3 ];
-};
+typedef struct _IMAGE_SEPARATE_DEBUG_HEADER {
+	WORD	Signature;
+	WORD	Flags;
+	WORD	Machine;
+	WORD	Characteristics;
+	DWORD	TimeDateStamp;
+	DWORD	CheckSum;
+	DWORD	ImageBase;
+	DWORD	SizeOfImage;
+	DWORD	NumberOfSections;
+	DWORD	ExportedNamesSize;
+	DWORD	DebugDirectorySize;
+	DWORD	Reserved[ 3 ];
+} IMAGE_SEPARATE_DEBUG_HEADER,*LPIMAGE_SEPARATE_DEBUG_HEADER;
+
+#define IMAGE_SEPARATE_DEBUG_SIGNATURE 0x4944
 
 #endif /* __WINE_PEEXE_H */
diff --git a/include/resource.h b/include/resource.h
index 0898fed..02a6dd4 100644
--- a/include/resource.h
+++ b/include/resource.h
@@ -22,6 +22,7 @@
 typedef enum
 {
     SYSRES_MENU_SYSMENU,
+    SYSRES_MENU_EDITMENU,
     SYSRES_DIALOG_MSGBOX,
     SYSRES_DIALOG_SHELL_ABOUT_MSGBOX,
     SYSRES_DIALOG_OPEN_FILE,
diff --git a/include/resource32.h b/include/resource32.h
deleted file mode 100644
index 644b6ae..0000000
--- a/include/resource32.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Win32 functions, structures, and types related to resources
- *
- * Copyright 1995 Thomas Sandford
- *
- */
-
-#ifndef __WINE_RESOURCE32_H
-#define __WINE_RESOURCE32_H
-
-#include <stddef.h>
-
-typedef struct _IMAGE_RESOURCE_DIRECTORY {
-	DWORD Characteristics;
-	DWORD TimeDateStamp;
-	WORD MajorVersion;
-	WORD MinorVersion;
-	WORD NumberOfNamedEntries;
-	WORD NumberOfIdEntries;
-} IMAGE_RESOURCE_DIRECTORY, *PIMAGE_RESOURCE_DIRECTORY;
-
-typedef struct _IMAGE_RESOURCE_DIRECTORY_ENTRY {
-	DWORD Name;
-	DWORD OffsetToData;
-} IMAGE_RESOURCE_DIRECTORY_ENTRY, *PIMAGE_RESOURCE_DIRECTORY_ENTRY;
-
-typedef struct _IMAGE_RESOURCE_DATA_ENTRY {
-	DWORD OffsetToData;
-	DWORD Size;
-	DWORD CodePage;
-	DWORD Reserved;
-} IMAGE_RESOURCE_DATA_ENTRY, *PIMAGE_RESOURCE_DATA_ENTRY;
-
-typedef struct _IMAGE_RESOURCE_DIR_STRING_U {
-	WORD Length;
-	WCHAR NameString[1];
-} IMAGE_RESOURCE_DIR_STRING_U, *PIMAGE_RESOURCE_DIR_STRING_U;
-
-#endif  /* __WINE_RESOURCE32_H */
diff --git a/include/sigcontext.h b/include/sigcontext.h
index 24e5a59..157bd91 100644
--- a/include/sigcontext.h
+++ b/include/sigcontext.h
@@ -44,6 +44,11 @@
 typedef struct sigcontext SIGCONTEXT;
 #endif  /* NetBSD */
 
+#ifdef __FreeBSD__
+#include <signal.h>
+typedef struct sigcontext SIGCONTEXT;
+#endif  /* FreeBSD */
+
 #if defined(__svr4__) || defined(_SCO_DS)
 #include <signal.h>
 #ifdef _SCO_DS
@@ -53,12 +58,12 @@
 typedef struct ucontext SIGCONTEXT;
 #endif  /* svr4 || SCO_DS */
 
-#ifdef __FreeBSD__
-#include <signal.h>
-typedef struct sigcontext SIGCONTEXT;
-#endif  /* FreeBSD */
+#ifdef __EMX__
+typedef struct CONTEXTRECORD SIGCONTEXT;
+#endif  /* __EMX__ */
 
-#if !defined(__svr4__) && !defined(_SCO_DS)
+
+#if defined(linux) || defined(__NetBSD__) || defined(__FreeBSD__)
 
 #define EAX_sig(context)     ((context)->sc_eax)
 #define EBX_sig(context)     ((context)->sc_ebx)
@@ -88,7 +93,9 @@
 #define EIP_sig(context)     ((context)->sc_eip)
 #define ESP_sig(context)     ((context)->sc_esp)
 
-#else  /* __svr4__ || _SCO_DS */
+#endif  /* linux || __NetBSD__ || __FreeBSD__ */
+
+#if defined(__svr4__) || defined(_SCO_DS)
 
 #ifdef _SCO_DS
 #define gregs regs
@@ -118,8 +125,31 @@
 #else
 #define ESP_sig(context)     ((context)->uc_mcontext.gregs[ESP])
 #endif
+
+#endif  /* svr4 || SCO_DS */
                             
-#endif  /* __svr4__ || _SCO_DS */
+#ifdef __EMX__
+
+#define EAX_sig(context)     ((context)->ctx_RegEax)
+#define EBX_sig(context)     ((context)->ctx_RegEbx)
+#define ECX_sig(context)     ((context)->ctx_RegEcx)
+#define EDX_sig(context)     ((context)->ctx_RegEdx)
+#define ESI_sig(context)     ((context)->ctx_RegEsi)
+#define EDI_sig(context)     ((context)->ctx_RegEdi)
+#define EBP_sig(context)     ((context)->ctx_RegEbp)
+#define ESP_sig(context)     ((context)->ctx_RegEsp)
+#define CS_sig(context)      ((context)->ctx_SegCS)
+#define DS_sig(context)      ((context)->ctx_SegDS)
+#define ES_sig(context)      ((context)->ctx_SegES)
+#define SS_sig(context)      ((context)->ctx_SegSS)
+#define FS_sig(context)      ((context)->ctx_SegFS)
+#define GS_sig(context)      ((context)->ctx_SegGS)
+#define EFL_sig(context)     ((context)->ctx_EFlags)
+#define EIP_sig(context)     ((context)->ctx_RegEip)
+
+#endif  /* __EMX__ */
+
+/* Generic definitions */
 
 #define AX_sig(context)      (*(WORD*)&EAX_sig(context))
 #define BX_sig(context)      (*(WORD*)&EBX_sig(context))
diff --git a/include/win16drv.h b/include/win16drv.h
index 6ee48af..c6d7349 100644
--- a/include/win16drv.h
+++ b/include/win16drv.h
@@ -110,23 +110,6 @@
 typedef short SHORT; 
 
 #pragma pack(1)
-
-typedef struct TEXTXFORM 
-{
-    SHORT  txfHeight;
-    SHORT  txfWidth;
-    SHORT  txfEscapement;
-    SHORT  txfOrientation;
-    SHORT  txfWeight;
-    CHAR   txfItalic;
-    CHAR   txfUnderline;
-    CHAR   txfStrikeOut;
-    CHAR   txfOutPrecision;
-    CHAR   txfClipPrecision;
-    SHORT  txfAccelerator WINE_PACKED;
-    SHORT  txfOverhang WINE_PACKED;
-} TEXTXFORM, *LPTEXTXFORM;
-
 #define PCOLOR DWORD
 typedef struct DRAWMODE 
 {
@@ -144,42 +127,6 @@
     COLORREF LTextColor; 
 } DRAWMODE, *LPDRAWMODE;
 
-typedef struct FONTINFO 
-{
-    SHORT dfType;
-    SHORT dfPoints;
-    SHORT dfVertRes;
-    SHORT dfHorizRes;
-    SHORT dfAscent;
-    SHORT dfInternalLeading;
-    SHORT dfExternalLeading;
-    CHAR  dfItalic;
-    CHAR  dfUnderline;
-    CHAR  dfStrikeOut;
-    SHORT dfWeight;
-    CHAR  dfCHARSet;
-    SHORT dfPixWidth;
-    SHORT dfPixHeight;
-    CHAR  dfPitchAndFamily;
-    SHORT dfAvgWidth;
-    SHORT dfMaxWidth;
-    CHAR  dfFirstCHAR;
-    CHAR  dfLastCHAR;
-    CHAR  dfDefaultCHAR;
-    CHAR  dfBreakCHAR;
-    SHORT dfWidthBytes;
-    LONG  dfDevice;
-    LONG  dfFace;
-    LONG  dfBitsPointer;
-    LONG  dfBitsOffset;
-    CHAR  dfReserved;
-    LONG  dfFlags;
-    SHORT dfAspace;
-    SHORT dfBspace;
-    SHORT dfCspace;
-    LONG  dfColorPointer;
-    LONG  dfReserved1[4];
-} FONTINFO, *LPFONTINFO;
 
 #pragma pack(4)
 
@@ -211,4 +158,7 @@
                                            LPSIZE32 size );
 extern BOOL32 WIN16DRV_GetTextMetrics( DC *dc, TEXTMETRIC32A *metrics );
 
+extern BOOL32 WIN16DRV_ExtTextOut( DC *dc, INT32 x, INT32 y, UINT32 flags,
+                                  const RECT32 *lprect, LPCSTR str, UINT32 count,
+                                  const INT32 *lpDx );
 #endif  /* __WINE_WIN16DRV_H */
diff --git a/include/winbase.h b/include/winbase.h
index 5b432c7..e277353 100644
--- a/include/winbase.h
+++ b/include/winbase.h
@@ -46,6 +46,7 @@
 
 /*WINAPI int  SetErrorMode(int);*/
 
+#define STATUS_SUCCESS                   0x00000000
 #define STATUS_WAIT_0                    0x00000000    
 #define STATUS_ABANDONED_WAIT_0          0x00000080    
 #define STATUS_USER_APC                  0x000000C0    
@@ -55,10 +56,12 @@
 #define STATUS_DATATYPE_MISALIGNMENT     0x80000002    
 #define STATUS_BREAKPOINT                0x80000003    
 #define STATUS_SINGLE_STEP               0x80000004    
+#define	STATUS_BUFFER_OVERFLOW           0x80000005
 #define STATUS_ACCESS_VIOLATION          0xC0000005    
 #define STATUS_IN_PAGE_ERROR             0xC0000006    
 #define STATUS_NO_MEMORY                 0xC0000017    
 #define STATUS_ILLEGAL_INSTRUCTION       0xC000001D    
+#define	STATUS_BUFFER_TOO_SMALL          0xC0000023
 #define STATUS_NONCONTINUABLE_EXCEPTION  0xC0000025    
 #define STATUS_INVALID_DISPOSITION       0xC0000026    
 #define STATUS_ARRAY_BOUNDS_EXCEEDED     0xC000008C    
@@ -72,6 +75,7 @@
 #define STATUS_INTEGER_DIVIDE_BY_ZERO    0xC0000094    
 #define STATUS_INTEGER_OVERFLOW          0xC0000095    
 #define STATUS_PRIVILEGED_INSTRUCTION    0xC0000096    
+#define	STATUS_INVALID_PARAMETER_2       0xC00000F0
 #define STATUS_STACK_OVERFLOW            0xC00000FD    
 #define STATUS_CONTROL_C_EXIT            0xC000013A    
 
diff --git a/include/windows.h b/include/windows.h
index a65782d..4d71ced 100644
--- a/include/windows.h
+++ b/include/windows.h
@@ -1087,6 +1087,58 @@
   DWORD fsCsb[2];
 } FONTSIGNATURE,*LPFONTSIGNATURE;
 
+typedef struct 
+{
+    INT16  txfHeight;
+    INT16  txfWidth;
+    INT16  txfEscapement;
+    INT16  txfOrientation;
+    INT16  txfWeight;
+    CHAR   txfItalic;
+    CHAR   txfUnderline;
+    CHAR   txfStrikeOut;
+    CHAR   txfOutPrecision;
+    CHAR   txfClipPrecision;
+    INT16  txfAccelerator WINE_PACKED;
+    INT16  txfOverhang WINE_PACKED;
+} TEXTXFORM16, *LPTEXTXFORM16;
+
+typedef struct
+{
+    INT16 dfType;
+    INT16 dfPoints;
+    INT16 dfVertRes;
+    INT16 dfHorizRes;
+    INT16 dfAscent;
+    INT16 dfInternalLeading;
+    INT16 dfExternalLeading;
+    CHAR  dfItalic;
+    CHAR  dfUnderline;
+    CHAR  dfStrikeOut;
+    INT16 dfWeight;
+    CHAR  dfCHARSet;
+    INT16 dfPixWidth;
+    INT16 dfPixHeight;
+    CHAR  dfPitchAndFamily;
+    INT16 dfAvgWidth;
+    INT16 dfMaxWidth;
+    CHAR  dfFirstCHAR;
+    CHAR  dfLastCHAR;
+    CHAR  dfDefaultCHAR;
+    CHAR  dfBreakCHAR;
+    INT16 dfWidthBytes;
+    LONG  dfDevice;
+    LONG  dfFace;
+    LONG  dfBitsPointer;
+    LONG  dfBitsOffset;
+    CHAR  dfReserved;
+    LONG  dfFlags;
+    INT16 dfAspace;
+    INT16 dfBspace;
+    INT16 dfCspace;
+    LONG  dfColorPointer;
+    LONG  dfReserved1[4];
+} FONTINFO16, *LPFONTINFO16;
 
   /* lfWeight values */
 #define FW_DONTCARE	    0
@@ -4438,8 +4490,8 @@
 } CSTRING,*LPCSTRING;
 
 typedef struct _UNICODE_STRING {
-	UINT16	Length;		/* bytes ? */
-	UINT16	MaximumLength;	/* bytes ? */
+	UINT16	Length;		/* bytes */
+	UINT16	MaximumLength;	/* bytes */
 	LPWSTR	Buffer;
 } UNICODE_STRING,*LPUNICODE_STRING;
 
@@ -4449,6 +4501,102 @@
 #define	HIGH_PRIORITY_CLASS	0x00000080
 #define	REALTIME_PRIORITY_CLASS	0x00000100
 
+/* GDI Escape commands */
+#define	NEWFRAME		1
+#define	ABORTDOC		2
+#define	NEXTBAND		3
+#define	SETCOLORTABLE		4
+#define	GETCOLORTABLE		5
+#define	FLUSHOUTPUT		6
+#define	DRAFTMODE		7
+#define	QUERYESCSUPPORT		8
+#define	SETABORTPROC		9
+#define	STARTDOC		10
+#define	ENDDOC			11
+#define	GETPHYSPAGESIZE		12
+#define	GETPRINTINGOFFSET	13
+#define	GETSCALINGFACTOR	14
+#define	MFCOMMENT		15
+#define	GETPENWIDTH		16
+#define	SETCOPYCOUNT		17
+#define	SELECTPAPERSOURCE	18
+#define	DEVICEDATA		19
+#define	PASSTHROUGH		19
+#define	GETTECHNOLGY		20
+#define	GETTECHNOLOGY		20 /* yes, both of them */
+#define	SETLINECAP		21
+#define	SETLINEJOIN		22
+#define	SETMITERLIMIT		23
+#define	BANDINFO		24
+#define	DRAWPATTERNRECT		25
+#define	GETVECTORPENSIZE	26
+#define	GETVECTORBRUSHSIZE	27
+#define	ENABLEDUPLEX		28
+#define	GETSETPAPERBINS		29
+#define	GETSETPRINTORIENT	30
+#define	ENUMPAPERBINS		31
+#define	SETDIBSCALING		32
+#define	EPSPRINTING		33
+#define	ENUMPAPERMETRICS	34
+#define	GETSETPAPERMETRICS	35
+#define	POSTSCRIPT_DATA		37
+#define	POSTSCRIPT_IGNORE	38
+#define	MOUSETRAILS		39
+#define	GETDEVICEUNITS		42
+
+#define	GETEXTENDEDTEXTMETRICS	256
+#define	GETEXTENTTABLE		257
+#define	GETPAIRKERNTABLE	258
+#define	GETTRACKKERNTABLE	259
+#define	EXTTEXTOUT		512
+#define	GETFACENAME		513
+#define	DOWNLOADFACE		514
+#define	ENABLERELATIVEWIDTHS	768
+#define	ENABLEPAIRKERNING	769
+#define	SETKERNTRACK		770
+#define	SETALLJUSTVALUES	771
+#define	SETCHARSET		772
+
+#define	STRETCHBLT		2048
+#define	GETSETSCREENPARAMS	3072
+#define	QUERYDIBSUPPORT		3073
+#define	BEGIN_PATH		4096
+#define	CLIP_TO_PATH		4097
+#define	END_PATH		4098
+#define	EXT_DEVICE_CAPS		4099
+#define	RESTORE_CTM		4100
+#define	SAVE_CTM		4101
+#define	SET_ARC_DIRECTION	4102
+#define	SET_BACKGROUND_COLOR	4103
+#define	SET_POLY_MODE		4104
+#define	SET_SCREEN_ANGLE	4105
+#define	SET_SPREAD		4106
+#define	TRANSFORM_CTM		4107
+#define	SET_CLIP_BOX		4108
+#define	SET_BOUNDS		4109
+#define	SET_MIRROR_MODE		4110
+#define	OPENCHANNEL		4110
+#define	DOWNLOADHEADER		4111
+#define CLOSECHANNEL		4112
+#define	POSTSCRIPT_PASSTHROUGH	4115
+#define	ENCAPSULATED_POSTSCRIPT	4116
+
+/* Flag returned from Escape QUERYDIBSUPPORT */
+#define	QDI_SETDIBITS		1
+#define	QDI_GETDIBITS		2
+#define	QDI_DIBTOSCREEN		4
+#define	QDI_STRETCHDIB		8
+
+/* Spooler Error Codes */
+#define	SP_NOTREPORTED	0x4000
+#define	SP_ERROR	(-1)
+#define	SP_APPABORT	(-2)
+#define	SP_USERABORT	(-3)
+#define	SP_OUTOFDISK	(-4)
+#define	SP_OUTOFMEMORY	(-5)
+
+#define PR_JOBSTATUS	0x0000
+
 #pragma pack(4)
 
 /* Declarations for functions that exist only in Win16 */
@@ -4724,8 +4872,6 @@
 
 /* Declarations for functions that are the same in Win16 and Win32 */
 
-BOOL16     CheckDlgButton(HWND32,INT32,UINT32);
-BOOL16     CheckRadioButton(HWND32,UINT32,UINT32,UINT32);
 HBITMAP16  CreateBitmap(INT32,INT32,UINT32,UINT32,LPCVOID);
 BOOL16     CreateCaret(HWND32,HBITMAP32,INT32,INT32);
 HBITMAP16  CreateCompatibleBitmap(HDC32,INT32,INT32);
@@ -4737,7 +4883,6 @@
 LONG       GetBitmapBits(HBITMAP32,LONG,LPVOID);
 WORD       GetClassWord(HWND32,INT32);
 DWORD      GetDialogBaseUnits(void);
-INT16      GetDlgCtrlID(HWND32);
 DWORD      GetLastError(void);
 DWORD      GetMenuCheckMarkDimensions(void);
 COLORREF   GetSysColor(INT32);
@@ -4816,12 +4961,21 @@
 BOOL16     Arc16(HDC16,INT16,INT16,INT16,INT16,INT16,INT16,INT16,INT16);
 BOOL32     Arc32(HDC32,INT32,INT32,INT32,INT32,INT32,INT32,INT32,INT32);
 #define    Arc WINELIB_NAME(Arc)
+UINT16     ArrangeIconicWindows16(HWND16);
+UINT32     ArrangeIconicWindows32(HWND32);
+#define    ArrangeIconicWindows WINELIB_NAME(ArrangeIconicWindows)
+HDWP16     BeginDeferWindowPos16(INT16);
+HDWP32     BeginDeferWindowPos32(INT32);
+#define    BeginDeferWindowPos WINELIB_NAME(BeginDeferWindowPos)
 HDC16      BeginPaint16(HWND16,LPPAINTSTRUCT16);
 HDC32      BeginPaint32(HWND32,LPPAINTSTRUCT32);
 #define    BeginPaint WINELIB_NAME(BeginPaint)
 BOOL16     BitBlt16(HDC16,INT16,INT16,INT16,INT16,HDC16,INT16,INT16,DWORD);
 BOOL32     BitBlt32(HDC32,INT32,INT32,INT32,INT32,HDC32,INT32,INT32,DWORD);
 #define    BitBlt WINELIB_NAME(BitBlt)
+BOOL16     BringWindowToTop16(HWND16);
+BOOL32     BringWindowToTop32(HWND32);
+#define    BringWindowToTop WINELIB_NAME(BringWindowToTop)
 BOOL16     BuildCommDCB16(LPCSTR,LPDCB16);
 BOOL32     BuildCommDCB32A(LPCSTR,LPDCB32);
 BOOL32     BuildCommDCB32W(LPCWSTR,LPDCB32);
@@ -4873,9 +5027,15 @@
 BOOL32     CharToOemBuff32A(LPCSTR,LPSTR,DWORD);
 BOOL32     CharToOemBuff32W(LPCWSTR,LPSTR,DWORD);
 #define    CharToOemBuff WINELIB_NAME_AW(CharToOemBuff)
+BOOL16     CheckDlgButton16(HWND16,INT16,UINT16);
+BOOL32     CheckDlgButton32(HWND32,INT32,UINT32);
+#define    CheckDlgButton WINELIB_NAME(CheckDlgButton)
 BOOL16     CheckMenuItem16(HMENU16,UINT16,UINT16);
 DWORD      CheckMenuItem32(HMENU32,UINT32,UINT32);
 #define    CheckMenuItem WINELIB_NAME(CheckMenuItem)
+BOOL16     CheckRadioButton16(HWND16,UINT16,UINT16,UINT16);
+BOOL32     CheckRadioButton32(HWND32,UINT32,UINT32,UINT32);
+#define    CheckRadioButton WINELIB_NAME(CheckRadioButton)
 HWND16     ChildWindowFromPoint16(HWND16,POINT16);
 HWND32     ChildWindowFromPoint32(HWND32,POINT32);
 #define    ChildWindowFromPoint WINELIB_NAME(ChildWindowFromPoint)
@@ -5037,6 +5197,9 @@
 LRESULT    DefDlgProc32A(HWND32,UINT32,WPARAM32,LPARAM);
 LRESULT    DefDlgProc32W(HWND32,UINT32,WPARAM32,LPARAM);
 #define    DefDlgProc WINELIB_NAME_AW(DefDlgProc)
+HDWP16     DeferWindowPos16(HDWP16,HWND16,HWND16,INT16,INT16,INT16,INT16,UINT16);
+HDWP32     DeferWindowPos32(HDWP32,HWND32,HWND32,INT32,INT32,INT32,INT32,UINT32);
+#define    DeferWindowPos WINELIB_NAME(DeferWindowPos)
 LRESULT    DefFrameProc16(HWND16,HWND16,UINT16,WPARAM16,LPARAM);
 LRESULT    DefFrameProc32A(HWND32,HWND32,UINT32,WPARAM32,LPARAM);
 LRESULT    DefFrameProc32W(HWND32,HWND32,UINT32,WPARAM32,LPARAM);
@@ -5072,6 +5235,9 @@
 BOOL16     DestroyMenu16(HMENU16);
 BOOL32     DestroyMenu32(HMENU32);
 #define    DestroyMenu WINELIB_NAME(DestroyMenu)
+BOOL16     DestroyWindow16(HWND16);
+BOOL32     DestroyWindow32(HWND32);
+#define    DestroyWindow WINELIB_NAME(DestroyWindow)
 INT16      DialogBox16(HINSTANCE16,SEGPTR,HWND16,DLGPROC16);
 #define    DialogBox32A(inst,template,owner,func) \
            DialogBoxParam32A(inst,template,owner,func,0)
@@ -5136,6 +5302,12 @@
 BOOL16     EnableScrollBar16(HWND16,INT16,UINT16);
 BOOL32     EnableScrollBar32(HWND32,INT32,UINT32);
 #define    EnableScrollBar WINELIB_NAME(EnableScrollBar)
+BOOL16     EnableWindow16(HWND16,BOOL16);
+BOOL32     EnableWindow32(HWND32,BOOL32);
+#define    EnableWindow WINELIB_NAME(EnableWindow)
+BOOL16     EndDeferWindowPos16(HDWP16);
+BOOL32     EndDeferWindowPos32(HDWP32);
+#define    EndDeferWindowPos WINELIB_NAME(EndDeferWindowPos)
 BOOL16     EndPaint16(HWND16,const PAINTSTRUCT16*);
 BOOL32     EndPaint32(HWND32,const PAINTSTRUCT32*);
 #define    EndPaint WINELIB_NAME(EndPaint)
@@ -5174,6 +5346,9 @@
 BOOL16     EqualRgn16(HRGN16,HRGN16);
 BOOL32     EqualRgn32(HRGN32,HRGN32);
 #define    EqualRgn WINELIB_NAME(EqualRgn)
+INT16      Escape16(HDC16,INT16,INT16,SEGPTR,SEGPTR);
+INT32      Escape32(HDC32,INT32,INT32,LPVOID,LPVOID);
+#define    Escape WINELIB_NAME(Escape)
 LONG       EscapeCommFunction16(UINT16,UINT16);
 BOOL32     EscapeCommFunction32(INT32,UINT32);
 #define    EscapeCommFunction WINELIB_NAME(EscapeCommFunction)
@@ -5241,6 +5416,9 @@
 BOOL16     FreeResource16(HGLOBAL16);
 BOOL32     FreeResource32(HGLOBAL32);
 #define    FreeResource WINELIB_NAME(FreeResource)
+HWND16     GetActiveWindow16(void);
+HWND32     GetActiveWindow32(void);
+#define    GetActiveWindow WINELIB_NAME(GetActiveWindow)
 BOOL16     GetBitmapDimensionEx16(HBITMAP16,LPSIZE16);
 BOOL32     GetBitmapDimensionEx32(HBITMAP32,LPSIZE32);
 #define    GetBitmapDimensionEx WINELIB_NAME(GetBitmapDimensionEx)
@@ -5327,6 +5505,15 @@
 BOOL32     GetDiskFreeSpace32A(LPCSTR,LPDWORD,LPDWORD,LPDWORD,LPDWORD);
 BOOL32     GetDiskFreeSpace32W(LPCWSTR,LPDWORD,LPDWORD,LPDWORD,LPDWORD);
 #define    GetDiskFreeSpace WINELIB_NAME_AW(GetDiskFreeSpace)
+INT16      GetDlgCtrlID16(HWND16);
+INT32      GetDlgCtrlID32(HWND32);
+#define    GetDlgCtrlID WINELIB_NAME(GetDlgCtrlID)
+HWND16     GetDlgItem16(HWND16,INT16);
+HWND32     GetDlgItem32(HWND32,INT32);
+#define    GetDlgItem WINELIB_NAME(GetDlgItem)
+UINT16     GetDlgItemInt16(HWND16,INT16,BOOL16*,BOOL16);
+UINT32     GetDlgItemInt32(HWND32,INT32,BOOL32*,BOOL32);
+#define    GetDlgItemInt WINELIB_NAME(GetDlgItemInt)
 INT16      GetDlgItemText16(HWND16,INT16,SEGPTR,UINT16);
 INT32      GetDlgItemText32A(HWND32,INT32,LPSTR,UINT32);
 INT32      GetDlgItemText32W(HWND32,INT32,LPWSTR,UINT32);
@@ -5393,6 +5580,9 @@
 HWND16     GetNextDlgTabItem16(HWND16,HWND16,BOOL16);
 HWND32     GetNextDlgTabItem32(HWND32,HWND32,BOOL32);
 #define    GetNextDlgTabItem WINELIB_NAME(GetNextDlgTabItem)
+HWND16     GetNextWindow16(HWND16,WORD);
+#define    GetNextWindow32 GetWindow32
+#define    GetNextWindow WINELIB_NAME(GetNextWindow)
 INT16      GetObject16(HANDLE16,INT16,LPVOID);
 INT32      GetObject32A(HANDLE32,INT32,LPVOID);
 INT32      GetObject32W(HANDLE32,INT32,LPVOID);
@@ -5497,6 +5687,9 @@
 BOOL32     GetTextMetrics32A(HDC32,LPTEXTMETRIC32A);
 BOOL32     GetTextMetrics32W(HDC32,LPTEXTMETRIC32W);
 #define    GetTextMetrics WINELIB_NAME_AW(GetTextMetrics)
+HWND16     GetTopWindow16(HWND16);
+HWND32     GetTopWindow32(HWND32);
+#define    GetTopWindow WINELIB_NAME(GetTopWindow)
 BOOL16     GetUpdateRect16(HWND16,LPRECT16,BOOL16);
 BOOL32     GetUpdateRect32(HWND32,LPRECT32,BOOL32);
 #define    GetUpdateRect WINELIB_NAME(GetUpdateRect)
@@ -5512,6 +5705,9 @@
 BOOL32     GetVolumeInformation32A(LPCSTR,LPSTR,DWORD,LPDWORD,LPDWORD,LPDWORD,LPSTR,DWORD);
 BOOL32     GetVolumeInformation32W(LPCWSTR,LPWSTR,DWORD,LPDWORD,LPDWORD,LPDWORD,LPWSTR,DWORD);
 #define    GetVolumeInformation WINELIB_NAME_AW(GetVolumeInformation)
+HWND16     GetWindow16(HWND16,WORD);
+HWND32     GetWindow32(HWND32,WORD);
+#define    GetWindow WINELIB_NAME(GetWindow)
 HDC16      GetWindowDC16(HWND16);
 HDC32      GetWindowDC32(HWND32);
 #define    GetWindowDC WINELIB_NAME(GetWindowDC)
@@ -5648,15 +5844,33 @@
 BOOL32     IsCharUpper32A(CHAR);
 BOOL32     IsCharUpper32W(WCHAR);
 #define    IsCharUpper WINELIB_NAME_AW(IsCharUpper)
+BOOL16     IsChild16(HWND16,HWND16);
+BOOL32     IsChild32(HWND32,HWND32);
+#define    IsChild WINELIB_NAME(IsChild)
 BOOL16     IsDBCSLeadByte16(BYTE);
 BOOL32     IsDBCSLeadByte32(BYTE);
 #define    IsDBCSLeadByte WINELIB_NAME(IsDBCSLeadByte)
+UINT16     IsDlgButtonChecked16(HWND16,UINT16);
+UINT32     IsDlgButtonChecked32(HWND32,UINT32);
+#define    IsDlgButtonChecked WINELIB_NAME(IsDlgButtonChecked)
+BOOL16     IsIconic16(HWND16);
+BOOL32     IsIconic32(HWND32);
+#define    IsIconic WINELIB_NAME(IsIconic)
 BOOL16     IsMenu16(HMENU16);
 BOOL32     IsMenu32(HMENU32);
 #define    IsMenu WINELIB_NAME(IsMenu)
 BOOL16     IsRectEmpty16(const RECT16*);
 BOOL32     IsRectEmpty32(const RECT32*);
 #define    IsRectEmpty WINELIB_NAME(IsRectEmpty)
+BOOL16     IsWindowEnabled16(HWND16);
+BOOL32     IsWindowEnabled32(HWND32);
+#define    IsWindowEnabled WINELIB_NAME(IsWindowEnabled)
+BOOL16     IsWindowVisible16(HWND16);
+BOOL32     IsWindowVisible32(HWND32);
+#define    IsWindowVisible WINELIB_NAME(IsWindowVisible)
+BOOL16     IsZoomed16(HWND16);
+BOOL32     IsZoomed32(HWND32);
+#define    IsZoomed WINELIB_NAME(IsZoomed)
 BOOL16     KillSystemTimer16(HWND16,UINT16);
 BOOL32     KillSystemTimer32(HWND32,UINT32);
 #define    KillSystemTimer WINELIB_NAME(KillSystemTimer)
@@ -5785,6 +5999,9 @@
 BOOL16     MoveToEx16(HDC16,INT16,INT16,LPPOINT16);
 BOOL32     MoveToEx32(HDC32,INT32,INT32,LPPOINT32);
 #define    MoveToEx WINELIB_NAME(MoveToEx)
+BOOL16     MoveWindow16(HWND16,INT16,INT16,INT16,INT16,BOOL16);
+BOOL32     MoveWindow32(HWND32,INT32,INT32,INT32,INT32,BOOL32);
+#define    MoveWindow WINELIB_NAME(MoveWindow)
 INT16      MulDiv16(INT16,INT16,INT16);
 INT32      MulDiv32(INT32,INT32,INT32);
 #define    MulDiv WINELIB_NAME(MulDiv)
@@ -5988,6 +6205,9 @@
 LRESULT    SendMessage32A(HWND32,UINT32,WPARAM32,LPARAM);
 LRESULT    SendMessage32W(HWND32,UINT32,WPARAM32,LPARAM);
 #define    SendMessage WINELIB_NAME_AW(SendMessage)
+HWND16     SetActiveWindow16(HWND16);
+HWND32     SetActiveWindow32(HWND32);
+#define    SetActiveWindow WINELIB_NAME(SetActiveWindow)
 BOOL16     SetBitmapDimensionEx16(HBITMAP16,INT16,INT16,LPSIZE16);
 BOOL32     SetBitmapDimensionEx32(HBITMAP32,INT32,INT32,LPSIZE32);
 #define    SetBitmapDimensionEx WINELIB_NAME(SetBitmapDimensionEx)
@@ -6129,6 +6349,9 @@
 HHOOK      SetWindowsHookEx32A(INT32,HOOKPROC32,HINSTANCE32,DWORD);
 HHOOK      SetWindowsHookEx32W(INT32,HOOKPROC32,HINSTANCE32,DWORD);
 #define    SetWindowsHookEx WINELIB_NAME_AW(SetWindowsHookEx)
+BOOL16     SetWindowPos16(HWND16,HWND16,INT16,INT16,INT16,INT16,WORD);
+BOOL32     SetWindowPos32(HWND32,HWND32,INT32,INT32,INT32,INT32,WORD);
+#define    SetWindowPos WINELIB_NAME(SetWindowPos)
 void       SetWindowText16(HWND16,SEGPTR);
 void       SetWindowText32A(HWND32,LPCSTR);
 void       SetWindowText32W(HWND32,LPCWSTR);
@@ -6140,6 +6363,9 @@
 void       ShowScrollBar16(HWND16,INT16,BOOL16);
 BOOL32     ShowScrollBar32(HWND32,INT32,BOOL32);
 #define    ShowScrollBar WINELIB_NAME(ShowScrollBar)
+BOOL16     ShowWindow16(HWND16,INT16);
+BOOL32     ShowWindow32(HWND32,INT32);
+#define    ShowWindow WINELIB_NAME(ShowWindow)
 BOOL16     StretchBlt16(HDC16,INT16,INT16,INT16,INT16,HDC16,INT16,INT16,
                         INT16,INT16,DWORD);
 BOOL32     StretchBlt32(HDC32,INT32,INT32,INT32,INT32,HDC32,INT32,INT32,
@@ -6196,9 +6422,9 @@
 DWORD      VerFindFile32A(UINT32,LPCSTR,LPCSTR,LPCSTR,LPSTR,UINT32*,LPSTR,UINT32*);
 DWORD      VerFindFile32W(UINT32,LPCWSTR,LPCWSTR,LPCWSTR,LPWSTR,UINT32*,LPWSTR,UINT32*);
 #define    VerFindFile WINELIB_NAME_AW(VerFindFile)
-DWORD      VerInstallFile16(UINT16,LPCSTR,LPCSTR,LPCSTR,LPCSTR,LPSTR,UINT16*);
-DWORD      VerInstallFile32A(UINT32,LPCSTR,LPCSTR,LPCSTR,LPCSTR,LPSTR,UINT32*);
-DWORD      VerInstallFile32W(UINT32,LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR,LPWSTR,UINT32*);
+DWORD      VerInstallFile16(UINT16,LPCSTR,LPCSTR,LPCSTR,LPCSTR,LPCSTR,LPSTR,UINT16*);
+DWORD      VerInstallFile32A(UINT32,LPCSTR,LPCSTR,LPCSTR,LPCSTR,LPCSTR,LPSTR,UINT32*);
+DWORD      VerInstallFile32W(UINT32,LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR,LPWSTR,UINT32*);
 #define    VerInstallFile WINELIB_NAME_AW(VerInstallFile)
 DWORD      VerLanguageName16(UINT16,LPSTR,UINT16);
 DWORD      VerLanguageName32A(UINT32,LPSTR,UINT32);
@@ -6345,9 +6571,6 @@
 INT        AddFontResource(LPCSTR);
 BOOL       AnimatePalette(HPALETTE16,UINT,UINT,LPPALETTEENTRY);
 BOOL       AnyPopup(void);
-UINT       ArrangeIconicWindows(HWND);
-HDWP16     BeginDeferWindowPos(INT);
-BOOL       BringWindowToTop(HWND);
 void       CalcChildScroll(HWND,WORD);
 BOOL       CallMsgFilter(SEGPTR,INT);
 BOOL       CloseClipboard(void);
@@ -6361,22 +6584,17 @@
 HGLOBAL16  CreateCursorIconIndirect(HINSTANCE16,CURSORICONINFO*,const BYTE*,const BYTE*);
 HICON16    CreateIcon(HINSTANCE16,INT,INT,BYTE,BYTE,const BYTE*,const BYTE*);
 HPALETTE16 CreatePalette(const LOGPALETTE*);
-HDWP16     DeferWindowPos(HDWP16,HWND,HWND,INT,INT,INT,INT,UINT);
 ATOM       DeleteAtom(ATOM);
 BOOL       DestroyCursor(HCURSOR16);
 BOOL       DestroyIcon(HICON16);
-BOOL       DestroyWindow(HWND);
 LONG       DispatchMessage(const MSG16*);
 BOOL16     DragDetect(HWND16,POINT16);
 DWORD      DragObject(HWND, HWND, WORD, HANDLE16, WORD, HCURSOR16);
 BOOL       DrawIcon(HDC16,INT,INT,HICON16);
 DWORD      DumpIcon(SEGPTR,WORD*,SEGPTR*,SEGPTR*);
 BOOL       EmptyClipboard(void);
-BOOL       EnableWindow(HWND,BOOL);
-BOOL       EndDeferWindowPos(HDWP16);
 UINT16     EnumClipboardFormats(UINT16);
 BOOL       EnumMetaFile(HDC16,HMETAFILE16,MFENUMPROC16,LPARAM);
-INT        Escape(HDC16,INT,INT,SEGPTR,SEGPTR);
 HICON16    ExtractIcon(HINSTANCE16,LPCSTR,WORD);
 void       FatalExit(int);
 ATOM       FindAtom(SEGPTR);
@@ -6385,7 +6603,6 @@
 void       FreeLibrary(HINSTANCE16);
 UINT       GDIRealizePalette(HDC16);
 HPALETTE16 GDISelectPalette(HDC16,HPALETTE16,WORD);
-HWND       GetActiveWindow(void);
 DWORD      GetAspectRatioFilter(HDC16);
 int        GetAsyncKeyState(int);
 WORD       GetAtomName(ATOM,LPSTR,short);
@@ -6398,8 +6615,6 @@
 HCURSOR16  GetCursor(void);
 SEGPTR     GetDOSEnvironment(void);
 int        GetDeviceCaps(HDC16,WORD);
-HWND       GetDlgItem(HWND,WORD);
-WORD       GetDlgItemInt(HWND,WORD,BOOL*,BOOL);
 WORD       GetDoubleClickTime(void);
 int        GetEnvironment(LPSTR,LPSTR,WORD);
 DWORD      GetFreeSpace(UINT16);
@@ -6421,7 +6636,6 @@
 INT16      GetModuleUsage(HINSTANCE16);
 DWORD      GetNearestColor(HDC16,DWORD);
 WORD       GetNearestPaletteIndex(HPALETTE16,DWORD);
-HWND       GetNextWindow(HWND,WORD);
 HWND       GetOpenClipboardWindow(void);
 WORD       GetPaletteEntries(HPALETTE16,WORD,WORD,LPPALETTEENTRY);
 int        GetPriorityClipboardFormat(WORD*,short);
@@ -6434,10 +6648,8 @@
 BYTE       GetTempDrive(BYTE);
 LPINT16    GetThresholdEvent(void);
 int        GetThresholdStatus(void);
-HWND       GetTopWindow(HWND);
 BOOL       GetWinDebugInfo(LPWINDEBUGINFO,UINT);
 LONG       GetWinFlags(void);
-HWND       GetWindow(HWND,WORD);
 ATOM       GlobalDeleteAtom(ATOM);
 void       GlobalFix(HGLOBAL16);
 BOOL16     GlobalUnWire(HGLOBAL16);
@@ -6446,20 +6658,13 @@
 BOOL       GrayString(HDC16,HBRUSH16,GRAYSTRINGPROC16,LPARAM,INT,INT,INT,INT,INT);
 BOOL       InSendMessage(void);
 WORD       InitAtomTable(WORD);
-BOOL       IsChild(HWND,HWND);
 BOOL       IsClipboardFormatAvailable(WORD);
-BOOL       IsDialogMessage(HWND,LPMSG16);
-WORD       IsDlgButtonChecked(HWND,WORD);
-BOOL       IsIconic(HWND);
+BOOL16     IsDialogMessage(HWND16,LPMSG16);
 BOOL       IsValidMetaFile(HMETAFILE16);
-BOOL       IsWindowEnabled(HWND);
-BOOL       IsWindowVisible(HWND);
-BOOL       IsZoomed(HWND);
 HINSTANCE16 LoadModule(LPCSTR,LPVOID);
 FARPROC16  LocalNotify(FARPROC16);
 WORD       MapVirtualKey(WORD,WORD);
 void       MessageBeep(WORD);
-BOOL       MoveWindow(HWND,short,short,short,short,BOOL);
 DWORD      OemKeyScan(WORD);
 BOOL       OpenClipboard(HWND);
 BOOL       OpenIcon(HWND);
@@ -6483,7 +6688,6 @@
 BOOL       ResizePalette(HPALETTE16,UINT);
 void       ScrollChildren(HWND,UINT,WPARAM16,LPARAM);
 HPALETTE16 SelectPalette(HDC16,HPALETTE16,BOOL);
-HWND       SetActiveWindow(HWND);
 HANDLE16   SetClipboardData(WORD,HANDLE16);
 HWND       SetClipboardViewer(HWND);
 void       SetConvertHook(BOOL);
@@ -6512,11 +6716,9 @@
 int        SetVoiceSound(int,LONG,int);
 int        SetVoiceThreshold(int,int);
 BOOL       SetWinDebugInfo(LPWINDEBUGINFO);
-BOOL       SetWindowPos(HWND,HWND,INT,INT,INT,INT,WORD);
 HINSTANCE16 ShellExecute(HWND,LPCSTR,LPCSTR,LPSTR,LPCSTR,INT);
 int        ShowCursor(BOOL);
 void       ShowOwnedPopups(HWND,BOOL);
-BOOL       ShowWindow(HWND,int);
 DWORD      SizeofResource(HMODULE16,HRSRC16);
 int        StartSound(void);
 int        StopSound(void);
diff --git a/include/winerror.h b/include/winerror.h
index 6488e5e..28cc005 100644
--- a/include/winerror.h
+++ b/include/winerror.h
@@ -20,6 +20,7 @@
 #define ERROR_BAD_FORMAT            11
 #define ERROR_OUTOFMEMORY           14
 #define ERROR_NO_MORE_FILES         18
+#define ERROR_SHARING_VIOLATION     32
 #define ERROR_FILE_EXISTS           80
 #define ERROR_INVALID_PARAMETER     87
 #define ERROR_BROKEN_PIPE           109
diff --git a/include/winpos.h b/include/winpos.h
index d8df072..be21ee2 100644
--- a/include/winpos.h
+++ b/include/winpos.h
@@ -9,7 +9,7 @@
 
 #include "win.h"
 
-#define DWP_MAGIC  0x5057  /* 'WP' */
+#define DWP_MAGIC  ((INT32)('W' | ('P' << 8) | ('O' << 16) | ('S' << 24)))
 
 /* undocumented SWP flags - from SDK 3.1 */
 #define SWP_NOCLIENTSIZE	0x0800
@@ -17,12 +17,12 @@
 
 typedef struct
 {
-    WORD        actualCount;
-    WORD        suggestedCount;
-    WORD        valid;
-    WORD        wMagic;
+    INT32       actualCount;
+    INT32       suggestedCount;
+    BOOL32      valid;
+    INT32       wMagic;
     HWND32      hwndParent;
-    WINDOWPOS16 winPos[1];
+    WINDOWPOS32 winPos[1];
 } DWP;
 
 extern void WINPOS_FindIconPos( HWND32 hwnd );
diff --git a/include/x11drv.h b/include/x11drv.h
index 9372224..127441d 100644
--- a/include/x11drv.h
+++ b/include/x11drv.h
@@ -55,6 +55,7 @@
                              INT32 xSrc, INT32 ySrc, DWORD rop );
 extern BOOL32 X11DRV_GetTextExtentPoint( struct tagDC *dc, LPCSTR str,
                                          INT32 count, LPSIZE32 size );
+extern BOOL32 X11DRV_GetTextMetrics(struct tagDC *dc, TEXTMETRIC32A *metrics);
 extern BOOL32 X11DRV_PatBlt( struct tagDC *dc, INT32 left, INT32 top,
                              INT32 width, INT32 height, DWORD rop );
 extern VOID X11DRV_SetDeviceClipping(struct tagDC *dc);