Release 970215

Sat Feb 15 11:59:17 1997  Alexandre Julliard  <julliard@lrc.epfl.ch>

	* [*/*]
	Converted a lot of functions to Win32 types.
	Removed HWND type.

Fri Feb 14 15:09:19 1997  Onno Hovers <onno@stack.nl>

	* [memory/global.c]
	Implemented GMEM_MOVEABLE blocks for Win32.

Fri Feb 14 00:24:39 1997  Alex Korobka <alex@trantor.pharm.sunysb.edu>

	* [loader/task.c] [windows/queue.c]
	Do not read X events while in the intertask SendMessage().

	* [misc/lstr.c]
	Fixed CharPrev32A().

	* [windows/hook.c] [include/hook.h]
	Restored broken WH_CALLWNDPROC functionality for dialogs, etc...

	* [windows/win.c] [windows/defwnd.c] [windows/mdi.c]
	  [windows/event.c] [controls/edit.c] 
	Added WIN_ISWIN32 flag to windows created by Win32 calls. 
	Several new Win32 messages are sent when this flag is on.
	
	* [msdos/dosmem.c] [memory/global.c]
	Some changes in DOS memory allocation.

Fri Feb  7 21:46:03 1997  Andrew Taylor  <andrew@riscan.com>

	* [win32/security.c]
	Added SID manipulation functions.

	* [include/debug.h]
	Added debugging class "security".

Fri  Feb 7 20:46:33 1997  Robert Pouliot <krynos@clic.net>

	* [debugger/msc.c] [debugger/source.c] 
	  [documentation/wine_os2.txt] [loader/signal.c]
	Some more changes for OS/2. Doesn't work yet.

Fri  Feb 7 09:31:17 1997  Marcus Meissner <msmeissn@cip.informatik.uni-erlangen.de>

	* [scheduler/process.c]
	Added ExpandEnvironmentStrings*.

	* [misc/ntdll.c] [include/ntdll.h]
	Added some new functions.

	* [objects/cursoricon.c]
	CURSORICON_LoadHandler: check against some bizarre out of memory
	conditions.
	
	* [windows/mdi.c]
	Fixed DefFrameProc32*, added TranslateMDISysAccel32.

Wed Feb  5 01:31:05 1997  John Zero <john@globe.graphisoft.hu>

	* [resources/sysres_Hu.rc] [misc/ole2nls.c] [misc/main.c]
	  [programs/progman/Hu.rc] [programs/winhelp/Hu.rc]
	Added Hungarian language support.
diff --git a/windows/queue.c b/windows/queue.c
index 709fa02..dc99aed 100644
--- a/windows/queue.c
+++ b/windows/queue.c
@@ -306,17 +306,20 @@
         !(senderQ = (MESSAGEQUEUE*)GlobalLock16( queue->hSendingTask))) 
 	{ dprintf_msg(stddeb,"\trcm: nothing to do\n"); return; }
 
-    queue->InSendMessageHandle = queue->hSendingTask;
-    if( !(queue->hSendingTask = senderQ->hPrevSendingTask) )
+    if( !senderQ->hPrevSendingTask )
     {
       queue->wakeBits &= ~QS_SENDMESSAGE;	/* no more sent messages */
       queue->changeBits &= ~QS_SENDMESSAGE;
     }
 
-    /* Remove sending queue from the list */
+    /* Save current state on stack */
     prevSender                 = queue->InSendMessageHandle;
     prevCtrlPtr		       = queue->smResultCurrent;
+
+    /* Remove sending queue from the list */
+    queue->InSendMessageHandle = queue->hSendingTask;
     queue->smResultCurrent     = senderQ->smResultInit;
+    queue->hSendingTask	       = senderQ->hPrevSendingTask;
 
     dprintf_msg(stddeb, "\trcm: smResultCurrent = %08x, prevCtrl = %08x\n", 
 				(unsigned)queue->smResultCurrent, (unsigned)prevCtrlPtr );
@@ -488,8 +491,8 @@
 static void QUEUE_WakeSomeone( UINT message )
 {
     WND*	  wndPtr = NULL;
-    HWND          hwnd;
     WORD          wakeBit;
+    HWND32 hwnd;
     MESSAGEQUEUE *queue = pCursorQueue;
 
     if( (message >= WM_KEYFIRST) && (message <= WM_KEYLAST) )
@@ -561,7 +564,7 @@
     if ((pos == sysMsgQueue->nextMessage) && sysMsgQueue->msgCount)
     {
         /* Queue is full, beep (but not on every mouse motion...) */
-        if (message != WM_MOUSEMOVE) MessageBeep(0);
+        if (message != WM_MOUSEMOVE) MessageBeep32(0);
         return;
     }
 
@@ -647,9 +650,18 @@
 
 
 /***********************************************************************
- *           PostQuitMessage   (USER.6)
+ *           PostQuitMessage16   (USER.6)
  */
-void PostQuitMessage( INT exitCode )
+void PostQuitMessage16( INT16 exitCode )
+{
+    PostQuitMessage32( exitCode );
+}
+
+
+/***********************************************************************
+ *           PostQuitMessage32   (USER32.420)
+ */
+void PostQuitMessage32( INT32 exitCode )
 {
     MESSAGEQUEUE *queue;
 
@@ -673,8 +685,8 @@
 /***********************************************************************
  *           GetWindowThreadProcessId   (USER32.312)
  */
-DWORD
-GetWindowThreadProcessId(HWND32 hwnd,LPDWORD process) {
+DWORD GetWindowThreadProcessId( HWND32 hwnd, LPDWORD process )
+{
     HTASK16 htask;
     TDB	*tdb;
 
@@ -695,9 +707,18 @@
 
 
 /***********************************************************************
- *           SetMessageQueue   (USER.266)
+ *           SetMessageQueue16   (USER.266)
  */
-BOOL SetMessageQueue( int size )
+BOOL16 SetMessageQueue16( INT16 size )
+{
+    return SetMessageQueue32( size );
+}
+
+
+/***********************************************************************
+ *           SetMessageQueue32   (USER32.493)
+ */
+BOOL32 SetMessageQueue32( INT32 size )
 {
     HQUEUE16 hQueue, hNewQueue;
     MESSAGEQUEUE *queuePtr;
@@ -757,19 +778,29 @@
 
 
 /***********************************************************************
- *           GetInputState   (USER.335)
+ *           GetInputState16   (USER.335)
  */
-BOOL GetInputState()
+BOOL16 GetInputState16(void)
+{
+    return GetInputState32();
+}
+
+
+/***********************************************************************
+ *           GetInputState32   (USER32.243)
+ */
+BOOL32 GetInputState32(void)
 {
     MESSAGEQUEUE *queue;
 
-    if (!(queue = (MESSAGEQUEUE *)GlobalLock16( GetTaskQueue(0) ))) return FALSE;
+    if (!(queue = (MESSAGEQUEUE *)GlobalLock16( GetTaskQueue(0) )))
+        return FALSE;
     return queue->wakeBits & (QS_KEY | QS_MOUSEBUTTON);
 }
 
 
 /***********************************************************************
- *           GetMessagePos   (USER.119)
+ *           GetMessagePos   (USER.119) (USER32.271)
  */
 DWORD GetMessagePos(void)
 {
@@ -781,7 +812,7 @@
 
 
 /***********************************************************************
- *           GetMessageTime   (USER.120)
+ *           GetMessageTime   (USER.120) (USER32.272)
  */
 LONG GetMessageTime(void)
 {
@@ -793,7 +824,7 @@
 
 
 /***********************************************************************
- *           GetMessageExtraInfo   (USER.288)
+ *           GetMessageExtraInfo   (USER.288) (USER32.270)
  */
 LONG GetMessageExtraInfo(void)
 {