Release 950430

Sat Apr 29 20:42:01 1995  Alexandre Julliard  (julliard@sunsite.unc.edu)

	* [controls/static.c]
	Fixed painting of SS_*FRAME controls.

	* [if1632/callback.c]
	Pass the window instance as DS to the 16-bit window procedure.
	Rewrote Catch() and Throw() to make them work with multiple tasks.

	* [loader/main.c]
	New function MAIN_Init() to perform initializations before the
	first task is started instead of doing them in InitApp().
	Temporary hack to command-line parsing to load one program per
	command-line argument, to make testing task-switching easier.

	* [loader/*.c]
	Reimplemented modules to use a Windows-compatible layout and to
	allow multiple tasks and multiple module instances. Not really
	finished yet.

	* [loader/task.c] [misc/exec.c]
	Reimplemented tasks to use a common address space, and implemented
	preliminary task-switching capabilities.

	* [memory/global.c]
	Fixed bug in GlobalNext().

	* [misc/main.c]
	Updated the list of contributors. Let me know if I forgot someone.

	* [miscemu/int21.c]
	Use one DTA per task instead of a global one.

	* [objects/bitblt.c]
	Fixed bug in BitBlt() that could cause BadMatch errors.

	* [tools/build.c]
	Added new function type 'stub', that makes possible to export an
	unimplemented function by name as well as by ordinal. This will
	avoid loading errors for unimplemented functions.
	Generate an in-memory module layout for built-in DLLs so that the
	same code can be used for built-in and loaded modules.
	Changed relay code to make it unnecessary to save the value of the
	BP register.

	* [windows/message.c]
	Implemented multiple message queues and preliminary task-switching
	capabilities. Inter-task SendMessage() calls are not implemented
	yet and will probably cause crashes if used.

	* [windows/property.c]
	Reimplemented properties and allocate them on the USER heap.

	* [windows/win.c]
	Fixed bug in SetWindowWord().
	Reimplemented EnumWindows() and EnumTaskWindows().

Tue Apr 18 09:48:38 1995   Bernd Schmidt <crux@pool.informatik.rwth-aachen.de>
        
	* [misc/main.c]
	GetSystemParametersInfo(): Additional action SPI_GETICONTITLEFONT.
	
	* [loader/resource.c]
	Removed the check for NE_SEGFLAGS_EXECUTEONLY, since it broke
	control.exe.
	Fixed icon loading.
	
	* [objects/font.c] [include/windows.h]
	Fixed a bug in InitFontsList() and worked on the EnumFonts()
	functions to make them comprehensible.

        * [controls/button.c]
	Fixed my previous patch to handle LBUTTONUP messages.

Fri Apr 14 11:41:28 1995  Cameron Heide  (heide@ee.ualberta.ca)

        * [misc/network.c, misc/dos_fs.c]
        Implemented WNetGetConnection.  All that is currently
        supported are drives, for which the remote name is simply
        the redirected UNIX directory name.

        * [miscemu/int2?.c]
        More drive number validity checking.

Wed Apr 12 11:28:37 1995   Bernd Schmidt <crux@pool.informatik.rwth-aachen.de>
        
        * [controls/listbox.c]
	Oops, my previous change to ListBoxDirectory broke the Borland
	file open dialog. Fixed.

Mon Apr 10 23:17:12 1995  Martin von Loewis  <loewis@informatik.hu-berlin.de>

	* [if1632/ole2nls.spec] [misc/ole2nls.c] [misc/Imakefile]
	New file ole2nls.c. Added stubs for GetUserDefaultLCID, 
	GetSystemDefaultLCID, GetUserDefaultLangID, GetSystemDefaultLangID.

Mon Apr 10 10:05:18 1995   Bernd Schmidt <crux@pool.informatik.rwth-aachen.de>
        
	* [memory/global.c] [memory/local.c] [include/windows.h]
	GlobalReAlloc(): If GMEM_MODIFY is set, don't resize the block.
	LocalReAlloc(): Same for LMEM_MODIFY.
	
        * [controls/listbox.c]
	Fixed a bug in ListBoxDirectory that prevented commdlg from working.
	Check for errors in some more places.

        * [if1632/gdi.spec] [if1632/user.spec]
	16 bit callback functions should be passed as segptrs.
	
	* [include/dlls.h] [loader/ne_image.c] [loader/selector.c]
	[loader/library.c]
	Prevent a DLL from being initialized twice (Borlands Resource
	Workshop used to do this).
	Provide an additional flag for each w_file that indicates whether
	it's an EXE or a DLL, for combinations like pbrush.exe/.dll.
	
	* [controls/button.c]
	Handle LBUTTONUP messages even if the button no longer has the
	capture (for WinHelp).
	
	* [include/wintypes.h]
	FARPROC is now a segptr for the emulator and a function
	pointer for the library.
	
	* [misc/commdlg.c] [misc/commdlg.h]
	Cleaned the file dialogs up a little. They now work reasonably well,
	although there are still some problems (e.g. files are initially
        invisible).

	* [windows/class.c] [if1632/user.spec] [include/windows.h]
	GetClassInfo() must take a segptr, as it checks whether the
	highword is zero.
	GetClassName() called the wrong atom function. No surprise it didn't
        find anything.

	* [misc/lstr.c]
	AnsiToOem() and OemToAnsi() didn't terminate the strings. Fixed.
        Removed some warnings.

	* [if1632/relay.c] [if1632/ddeml.spec] [include/dlls.h]
	New spec file for the 3.1 DDEML DDL. 

	* [controls/menu.c]
	Small fix to ChangeMenu - mask out the obsolete flags
	(MF_APPEND == MF_OWNERDRAW, this led to problems). It also had
	problems with the MF_BYPOSITION flag.

        * [windows/message.c]
        SendMessage(): call the WH_CALLWNDPROC hook function. This is rather
        ugly, I'm afraid. Windows probably passes a pointer to the 16 bit
        stack for speed reasons.
	
        * [windows/hook.c] [include/windows.h]
        Set/HookWindowsHook() shouldn't just call their *Ex counterparts, as
        they have slightly different semantics.
        MS Hearts now works somewhat, if you disable the new builtin DDEML.
        The graphics are completely messed up, though.
diff --git a/include/neexe.h b/include/neexe.h
index 51e860d..ad596fe 100644
--- a/include/neexe.h
+++ b/include/neexe.h
@@ -6,15 +6,17 @@
 #ifndef NEEXE_H
 #define NEEXE_H
 
+#include "wintypes.h"
+
 /*
  * Old MZ header for DOS programs.  Actually just a couple of fields
  * from it, so that we can find the start of the NE header.
  */
 struct mz_header_s
 {
-    u_short mz_magic;         /* MZ Header signature */
-    u_char  dont_care[0x3a];  /* MZ Header stuff */
-    u_short ne_offset;        /* Offset to extended header */
+    WORD mz_magic;         /* MZ Header signature */
+    BYTE  dont_care[0x3a];  /* MZ Header stuff */
+    WORD ne_offset;        /* Offset to extended header */
 };
 
 #define MZ_SIGNATURE  ('M' | ('Z' << 8))
@@ -24,38 +26,38 @@
  */
 struct ne_header_s
 {
-    u_short ne_magic;           /* NE signature 'NE' */
-    u_char  linker_version;	/* Linker version number		*/
-    u_char  linker_revision;	/* Linker revision number		*/
-    u_short entry_tab_offset;	/* Offset to entry table relative to NE */
-    u_short entry_tab_length;	/* Length of entry table in bytes	*/
-    u_long  reserved1;		/* Reserved by Microsoft		*/
-    u_short format_flags;	/* Flags about segments in this file	*/
-    u_short auto_data_seg;	/* Automatic data segment number	*/
-    u_short local_heap_length;	/* Initial size of local heap		*/
-    u_short stack_length;	/* Initial size of stack		*/
-    u_short ip;			/* Initial IP				*/
-    u_short cs;			/* Initial CS				*/
-    u_short sp;			/* Initial SP				*/
-    u_short ss;			/* Initial SS				*/
-    u_short n_segment_tab;	/* # of entries in segment table	*/
-    u_short n_mod_ref_tab;	/* # of entries in module reference tab.*/
-    u_short nrname_tab_length; 	/* Length of nonresident-name table     */
-    u_short segment_tab_offset;	/* Offset to segment table		*/
-    u_short resource_tab_offset;/* Offset to resource table		*/
-    u_short rname_tab_offset;	/* Offset to resident-name table	*/
-    u_short moduleref_tab_offset;/* Offset to module reference table	*/
-    u_short iname_tab_offset;	/* Offset to imported name table	*/
-    u_long  nrname_tab_offset;	/* Offset to nonresident-name table	*/
-    u_short n_mov_entry_points;	/* # of movable entry points		*/
-    u_short align_shift_count;	/* Logical sector alignment shift count */
-    u_short n_resource_seg;	/* # of resource segments		*/
-    u_char  operating_system;	/* Flags indicating target OS		*/
-    u_char  additional_flags;	/* Additional information flags		*/
-    u_short fastload_offset;	/* Offset to fast load area		*/
-    u_short fastload_length;	/* Length of fast load area		*/
-    u_short reserved2;		/* Reserved by Microsoft		*/
-    u_short expect_version;	/* Expected Windows version number	*/
+    WORD  ne_magic;           /* NE signature 'NE' */
+    BYTE  linker_version;	/* Linker version number		*/
+    BYTE  linker_revision;	/* Linker revision number		*/
+    WORD  entry_tab_offset;	/* Offset to entry table relative to NE */
+    WORD  entry_tab_length;	/* Length of entry table in bytes	*/
+    DWORD reserved1;		/* Reserved by Microsoft		*/
+    WORD  format_flags;	/* Flags about segments in this file	*/
+    WORD  auto_data_seg;	/* Automatic data segment number	*/
+    WORD  local_heap_length;	/* Initial size of local heap		*/
+    WORD  stack_length;	/* Initial size of stack		*/
+    WORD  ip;			/* Initial IP				*/
+    WORD  cs;			/* Initial CS				*/
+    WORD  sp;			/* Initial SP				*/
+    WORD  ss;			/* Initial SS				*/
+    WORD  n_segment_tab;	/* # of entries in segment table	*/
+    WORD  n_mod_ref_tab;	/* # of entries in module reference tab.*/
+    WORD  nrname_tab_length; 	/* Length of nonresident-name table     */
+    WORD  segment_tab_offset;	/* Offset to segment table		*/
+    WORD  resource_tab_offset;/* Offset to resource table		*/
+    WORD  rname_tab_offset;	/* Offset to resident-name table	*/
+    WORD  moduleref_tab_offset;/* Offset to module reference table	*/
+    WORD  iname_tab_offset;	/* Offset to imported name table	*/
+    DWORD nrname_tab_offset;	/* Offset to nonresident-name table	*/
+    WORD  n_mov_entry_points;	/* # of movable entry points		*/
+    WORD  align_shift_count;	/* Logical sector alignment shift count */
+    WORD  n_resource_seg;	/* # of resource segments		*/
+    BYTE  operating_system;	/* Flags indicating target OS		*/
+    BYTE  additional_flags;	/* Additional information flags		*/
+    WORD  fastload_offset;	/* Offset to fast load area		*/
+    WORD  fastload_length;	/* Length of fast load area		*/
+    WORD  reserved2;		/* Reserved by Microsoft		*/
+    WORD  expect_version;	/* Expected Windows version number	*/
 };
 
 #define NE_SIGNATURE  ('N' | ('E' << 8))
@@ -88,10 +90,10 @@
  */
 struct ne_segment_table_entry_s
 {
-    u_short seg_data_offset;	/* Sector offset of segment data	*/
-    u_short seg_data_length;	/* Length of segment data		*/
-    u_short seg_flags;		/* Flags associated with this segment	*/
-    u_short min_alloc;		/* Minimum allocation size for this	*/
+    WORD seg_data_offset;	/* Sector offset of segment data	*/
+    WORD seg_data_length;	/* Length of segment data		*/
+    WORD seg_flags;		/* Flags associated with this segment	*/
+    WORD min_alloc;		/* Minimum allocation size for this	*/
 };
 
 /*
@@ -113,11 +115,11 @@
  */
 struct relocation_entry_s
 {
-    u_char  address_type;	/* Relocation address type		*/
-    u_char  relocation_type;	/* Relocation type			*/
-    u_short offset;		/* Offset in segment to fixup		*/
-    u_short target1;		/* Target specification			*/
-    u_short target2;		/* Target specification			*/
+    BYTE address_type;	/* Relocation address type		*/
+    BYTE relocation_type;	/* Relocation type			*/
+    WORD offset;		/* Offset in segment to fixup		*/
+    WORD target1;		/* Target specification			*/
+    WORD target2;		/* Target specification			*/
 };
 
 /*