Release 960414

Sun Apr 14 12:51:27 1996  Alexandre Julliard  <julliard@lrc.epfl.ch>

	* [controls/menu.c] [include/dialog.h] [windows/dialog.c]
	Made the resource loading code always use the correct Windows
	layout for Winelib on other CPUs.

	* [include/module.h] [loader/module.c]
	Added self handle in NE_MODULE structure, so we can use a pointer
	instead of a handle.
	Added function MODULE_GetPtr() to validate a HMODULE.

	* [memory/heap.c]
	Implemented Win32 heap management.

	* [memory/selector.c]
	Fix selector limit for huge blocks.

Sat Apr 13 00:19:12 1996  Huw D. M. Davies <h.davies1@physics.oxford.ac.uk>

	* [objects/metafile.c]
	Fixed memcpy bug to allow memory based metafiles to work.

Fri Apr 12 19:25:41 1996  Frans van Dorsselaer  <dorssel@rulhm1.leidenuniv.nl>

	* [controls/edit.c] [controls/EDIT.TODO]
	Complete rewrite.  Everything changed: new features, new bugs.
	Main addition: WordWrap.

Fri Apr 12 20:29:55 1996  Tristan Tarrant <tst@dcs.ed.ac.uk>

	* [resources/sysres_It.rc]
	Fixed a few mistakes in the file and resized some of the controls.

Fri Apr 12 09:55:13 1996  John Harvey <john@division.co.uk>

	* [misc/winsocket.c]
	Fixed broken #if defined that stopped unixware compiling.

	* [win32/resource.c]
        Added missing return to end of FindResource32.

Thu Apr 11 18:00:00 1996  Alex Korobka <alex@phm30.pharm.sunysb.edu>

	* [windows/keyboard.c] [windows/event.c]
	Fixed GetKeyState for mouse buttons.

	* [windows/message.c]
	WM_MOUSEACTIVATE wasn't sent in some cases.

Wed Apr 10 18:59:53 1996  Niels de Carpentier  <niels@cindy.et.tudelft.nl>

	* [objects/font.c]
	Match slightly bigger font if height negative.

Mon Apr  8 13:46:15 1996  Deano Calver <deano@rattie.demon.co.uk>

	* [multimedia/mmsystem.c]
	Changed read's to FILE_read's in mmsystem to fix mmio bug.

Sun Apr  7 21:40:29 1996  Albrecht Kleine  <kleine@ak.sax.de>

	* [misc/commdlg.c] [resources/sysres_En.rc] [resources/sysres_De.rc]
	Introduced ColorDlgProc() for ChooseColor() and replaced fitting
	En-,De- resources. 
	As written in TODO: some national language support is needed here.
diff --git a/loader/ne_image.c b/loader/ne_image.c
index 8ae9004..2fcd8f9 100644
--- a/loader/ne_image.c
+++ b/loader/ne_image.c
@@ -49,7 +49,7 @@
     int ordinal, additive;
     unsigned short *sp;
 
-    if (!(pModule = (NE_MODULE *)GlobalLock( hModule ))) return FALSE;
+    if (!(pModule = MODULE_GetPtr( hModule ))) return FALSE;
     pSegTable = NE_SEG_TABLE( pModule );
     pSeg = pSegTable + segnum - 1;
     pModuleTable = NE_MODULE_TABLE( pModule );
@@ -171,7 +171,7 @@
             address = MODULE_GetEntryPoint( module, ordinal );
             if (!address)
             {
-                NE_MODULE *pTarget = (NE_MODULE *)GlobalLock( module );
+                NE_MODULE *pTarget = MODULE_GetPtr( module );
                 if (!pTarget)
                     fprintf( stderr, "Module not found: %04x, reference %d of module %*.*s\n",
                              module, rep->target1, 
@@ -187,7 +187,7 @@
             }
             if (debugging_fixup)
             {
-                NE_MODULE *pTarget = (NE_MODULE *)GlobalLock( module );
+                NE_MODULE *pTarget = MODULE_GetPtr( module );
                 fprintf( stddeb,"%d: %*.*s.%d=%04x:%04x\n", i + 1, 
                          *((BYTE *)pTarget + pTarget->name_table),
                          *((BYTE *)pTarget + pTarget->name_table),
@@ -208,7 +208,7 @@
 
             if (!address)
             {
-                NE_MODULE *pTarget = (NE_MODULE *)GlobalLock( module );
+                NE_MODULE *pTarget = MODULE_GetPtr( module );
                 fprintf( stderr, "Warning: no handler for %*.*s.%s, setting to 0:0\n",
                         *((BYTE *)pTarget + pTarget->name_table),
                         *((BYTE *)pTarget + pTarget->name_table),
@@ -216,7 +216,7 @@
             }
             if (debugging_fixup)
             {
-                NE_MODULE *pTarget = (NE_MODULE *)GlobalLock( module );
+                NE_MODULE *pTarget = MODULE_GetPtr( module );
                 fprintf( stddeb,"%d: %*.*s.%s=%04x:%04x\n", i + 1, 
                          *((BYTE *)pTarget + pTarget->name_table),
                          *((BYTE *)pTarget + pTarget->name_table),
@@ -347,23 +347,21 @@
  *
  * Fixup the exported functions prologs.
  */
-void NE_FixupPrologs( HMODULE hModule )
+void NE_FixupPrologs( NE_MODULE *pModule )
 {
 #ifdef WINELIB
 	fprintf(stderr,"NE_FixupPrologs should not be called for libwine\n");
 #else
-    NE_MODULE *pModule;
     SEGTABLEENTRY *pSegTable;
     WORD dgroup = 0;
     WORD sel;
     BYTE *p, *fixup_ptr, count;
 
-    pModule = (NE_MODULE *)GlobalLock( hModule );
     pSegTable = NE_SEG_TABLE(pModule);
     if (pModule->flags & NE_FFLAGS_SINGLEDATA)
         dgroup = pSegTable[pModule->dgroup-1].selector;
 
-    dprintf_module( stddeb, "MODULE_FixupPrologs(%04x)\n", hModule );
+    dprintf_module( stddeb, "MODULE_FixupPrologs(%04x)\n", pModule->self );
     p = (BYTE *)pModule + pModule->entry_table;
     while (*p)
     {
@@ -455,10 +453,11 @@
      * es:si  command line (always 0)
      */
 
-    pModule = (NE_MODULE *)GlobalLock( hModule );
+    if (!(pModule = MODULE_GetPtr( hModule ))) return FALSE;
     pSegTable = NE_SEG_TABLE( pModule );
 
-    if (!(pModule->flags & NE_FFLAGS_LIBMODULE)) return TRUE; /*not a library*/
+    if (!(pModule->flags & NE_FFLAGS_LIBMODULE) ||
+        (pModule->flags & NE_FFLAGS_WIN32)) return TRUE; /*not a library*/
     if (!pModule->cs) return TRUE;  /* no initialization code */
 
     if (!(pModule->flags & NE_FFLAGS_SINGLEDATA))
@@ -509,7 +508,7 @@
     NE_MODULE *pModule;
     HMODULE *pDLL;
 
-    pModule = (NE_MODULE *)GlobalLock( hModule );
+    if (!(pModule = MODULE_GetPtr( hModule ))) return;
     if (pModule->flags & NE_FFLAGS_WIN32)
     {
         PE_InitializeDLLs(hModule);