Release 960516

Thu May 16 13:35:31 1996  Alexandre Julliard  <julliard@lrc.epfl.ch>

	* [*/*.c]
	Renamed RECT, POINT and SIZE structures to RECT16, POINT16 and
	SIZE16. Implemented Win32 version of most functions that take
	these types as parameters.

	* [configure]
	Patched autoconf to attempt to correctly detect -lnsl and
	-lsocket. Please check this out.
	
	* [controls/button.c]
	Added support for Win32 BM_* messages.

	* [controls/menu.c]
	Avoid sending extra WM_MENUSELECT messages. This avoids crashes
	with Excel.

	* [memory.heap.c] [include/heap.h]
	Added support for SEGPTRs in Win32 heaps. Added a few macros to
 	make using SEGPTRs easier. They are a bit slower than MAKE_SEGPTR,
 	but they work with Win32.

	* [memory/atom.c]
	Implemented Win32 atom functions.

	* [memory/local.c]
	Fixed LocalReAlloc() changes to avoid copying the whole block twice.

	* [win32/memory.c]
	Use /dev/zero instead of MAP_ANON for VirtualAlloc().

	* [windows/class.c]
	Properly implemented the Win32 class functions.

	* [windows/winproc.c] (New file)
	New file handling the message translation between Win16 and Win32.

Mon May 13 18:00:00 1996 Alex Korobka <alex@phm30.pharm.sunysb.edu>

	* [windows/mdi.c] [windows/menu.c]
	Improved WM_MDICREATE and WM_MDICASCADE handling.

	* [windows/event.c] [objects/bitblt.c]
	Handle GraphicsExpose event for BitBlt from screen to screen.

	* [windows/event.c] [windows/win.c] [windows/nonclient.c]
	Bunch of fixes for problems with -managed.

	* [windows/win.c] [windows/winpos.c]
	Changed conditions for WM_SIZE, WM_MOVE, and WM_GETMINMAXINFO
	in CreateWindow.

	* [windows/win.c] [windows/queue.c] [misc/user.c]
	Do not send WM_PARENTNOTIFY when in AppExit and call WH_SHELL
	on window creation/destruction.

	* [objects/palette.c]
	Crude RealizePalette(). At least something is visible in LviewPro.

Sun May 12 02:05:00 1996  Thomas Sandford <t.d.g.sandford@prds-grn.demon.co.uk>

	* [if1632/gdi32.spec]
	Added Rectangle (use win16 version).

	* [if1632/kernel32.spec]
	Added GetWindowsDirectoryA (use win16 GetWindowsDirectory).

	* [if1632/user32.spec]
	Added GetSubMenu, MoveWindow, SetScrollPos, SetScrollRange (use win16
	versions).
	Added SetWindowsHookExA (empty stub for now).

	* [include/handle32.h]
	Changed #include <malloc.h> to #include <stdlib.h> to prevent
	hate message from FreeBSD compiler.

	* [win32/newfns.c]
	Added new function SetWindowsHookEx32A (empty stub for now).

	* [win32/user32.c]
	Removed redundant debugging printf statement.

Sun May 12 01:24:57 1996  Huw D. M. Davies <h.davies1@physics.oxford.ac.uk>

	* [memory/local.c]
	Avoid creating adjacent free blocks.
	Free the block in LocalReAlloc() before allocating a new one.
	Fixed LocalReAlloc() for discarded blocks.
	
Fri May 10 23:05:12 1996  Jukka Iivonen <iivonen@cc.helsinki.fi>

	* [resources/sysres_Fi.rc]
	ChooseFont and ChooseColor dialogs updated.

Fri May 10 17:19:33 1996  Marcus Meissner <msmeissn@cip.informatik.uni-erlangen.de>

	* [files/drive.c,if1632/kernel.spec]
	GetCurrentDirectory(),SetCurrentDirectory() implemented.

	* [if1632/advapi32.spec] [if1632/kernel.spec] [if1632/shell.spec]
	  [include/windows.h] [include/winreg.h] [loader/main.c]
	  [misc/main.c] [misc/shell.c] [misc/registry.c]
	Registry fixes:
	- loads win95 registry databases,
	- save only updated keys on default,
	- now adhers to the new function naming standard,
	- minor cleanups.

Tue May 7 22:36:13 1996  Albrecht Kleine  <kleine@ak.sax.de>

	* [combo.c]
	Added WM_COMMAND-handling for interaction between EDIT and COMBOLBOX
        and synchronized mine with Greg Kreider's works.

	* [commdlg.c]
	Bugfix in ChooseFont: font size handling.
diff --git a/windows/message.c b/windows/message.c
index c33ad1f..f86d585 100644
--- a/windows/message.c
+++ b/windows/message.c
@@ -5,6 +5,7 @@
  */
 
 #include <stdlib.h>
+#include <string.h>
 #include <sys/time.h>
 #include <sys/types.h>
 #include <errno.h>
@@ -55,11 +56,11 @@
 {
     WND *pWnd;
     BOOL eatMsg = FALSE;
-    INT hittest;
+    INT16 hittest;
     static DWORD lastClickTime = 0;
     static WORD  lastClickMsg = 0;
-    static POINT lastClickPos = { 0, 0 };
-    POINT pt = msg->pt;
+    static POINT16 lastClickPos = { 0, 0 };
+    POINT16 pt = msg->pt;
     MOUSEHOOKSTRUCT hook = { msg->pt, 0, HTCLIENT, 0 };
 
     BOOL mouseClick = ((msg->message == WM_LBUTTONDOWN) ||
@@ -71,7 +72,7 @@
     if (GetCapture())
     {
 	msg->hwnd = GetCapture();
-	ScreenToClient( msg->hwnd, &pt );
+	ScreenToClient16( msg->hwnd, &pt );
 	msg->lParam = MAKELONG( pt.x, pt.y );
         /* No need to further process the message */
         hook.hwnd = msg->hwnd;
@@ -102,7 +103,7 @@
 
             if (((ret == MA_ACTIVATE) || (ret == MA_ACTIVATEANDEAT)) 
                 && hwndTop != GetActiveWindow() )
-                WINPOS_ChangeActiveWindow( hwndTop, TRUE );
+                WINPOS_SetActiveWindow( hwndTop, TRUE , TRUE );
         }
     }
 
@@ -148,7 +149,7 @@
       /* Build the translated message */
 
     if (hittest == HTCLIENT)
-        ScreenToClient( msg->hwnd, &pt );
+        ScreenToClient16( msg->hwnd, &pt );
     else
     {
 	msg->wParam = hittest;
@@ -686,8 +687,8 @@
         SPY_ExitMessage( SPY_RESULT_INVALIDHWND, hwnd, msg, 0 );
         return 0;
     }
-    ret = CallWindowProc( wndPtr->lpfnWndProc, msgstruct.hWnd, msgstruct.wMsg,
-                          msgstruct.wParam, msgstruct.lParam );
+    ret = CallWindowProc16(wndPtr->lpfnWndProc, msgstruct.hWnd, msgstruct.wMsg,
+                           msgstruct.wParam, msgstruct.lParam );
     SPY_ExitMessage( SPY_RESULT_OK, hwnd, msg, ret );
     return ret;
 }
@@ -772,13 +773,9 @@
     {
 	if (msg->lParam)
         {
-#ifndef WINELIB
-            HINSTANCE ds = msg->hwnd ? WIN_GetWindowInstance( msg->hwnd )
-                                     : (HINSTANCE)CURRENT_DS;
-#endif
 /*            HOOK_CallHooks( WH_CALLWNDPROC, HC_ACTION, 0, FIXME ); */
-	    return CallWndProc( (WNDPROC)msg->lParam, ds, msg->hwnd,
-                                msg->message, msg->wParam, GetTickCount() );
+	    return CallWindowProc16( (WNDPROC)msg->lParam, msg->hwnd,
+                                   msg->message, msg->wParam, GetTickCount() );
         }
     }
 
@@ -788,8 +785,8 @@
     painting = (msg->message == WM_PAINT);
     if (painting) wndPtr->flags |= WIN_NEEDS_BEGINPAINT;
 /*    HOOK_CallHooks( WH_CALLWNDPROC, HC_ACTION, 0, FIXME ); */
-    retval = CallWindowProc( wndPtr->lpfnWndProc, msg->hwnd, msg->message,
-			     msg->wParam, msg->lParam );
+    retval = CallWindowProc16( wndPtr->lpfnWndProc, msg->hwnd, msg->message,
+                               msg->wParam, msg->lParam );
     if (painting && (wndPtr = WIN_FindWndPtr( msg->hwnd )) &&
         (wndPtr->flags & WIN_NEEDS_BEGINPAINT) && wndPtr->hrgnUpdate)
     {
@@ -797,28 +794,42 @@
 		msg->hwnd);
 	wndPtr->flags &= ~WIN_NEEDS_BEGINPAINT;
         /* Validate the update region to avoid infinite WM_PAINT loop */
-        ValidateRect( msg->hwnd, NULL );
+        ValidateRect32( msg->hwnd, NULL );
     }
     return retval;
 }
 
 
 /***********************************************************************
- *           RegisterWindowMessage   (USER.118)
+ *           RegisterWindowMessage16   (USER.118)
  */
-WORD RegisterWindowMessage( SEGPTR str )
+WORD RegisterWindowMessage16( SEGPTR str )
 {
-    dprintf_msg(stddeb, "RegisterWindowMessage: %08lx\n", (DWORD)str );
-    return GlobalAddAtom( str );
+    dprintf_msg(stddeb, "RegisterWindowMessage16: %08lx\n", (DWORD)str );
+    return GlobalAddAtom16( str );
 }
 
-WORD RegisterWindowMessageA( LPSTR str )
+
+/***********************************************************************
+ *           RegisterWindowMessage32A   (USER32.436)
+ */
+WORD RegisterWindowMessage32A( LPCSTR str )
 {
-    char buffer[256];
-    lstrcpyn( buffer, str, sizeof(buffer) );
-    return RegisterWindowMessage(MAKE_SEGPTR(buffer));
+    dprintf_msg(stddeb, "RegisterWindowMessage32A: %s\n", str );
+    return GlobalAddAtom32A( str );
 }
 
+
+/***********************************************************************
+ *           RegisterWindowMessage32W   (USER32.437)
+ */
+WORD RegisterWindowMessage32W( LPCWSTR str )
+{
+    dprintf_msg(stddeb, "RegisterWindowMessage32W: %p\n", str );
+    return GlobalAddAtom32W( str );
+}
+
+
 /***********************************************************************
  *           GetTickCount    (USER.13) (KERNEL32.299)
  */