Implemented WIN16_CallMsgFilter32, WIN16_DispatchMessage32,
DrawAnimatedRects16 (stub), FormatMessage16, WIN16_GetMessage32,
WIN16_PeekMessage32 and WIN16_TranslateMessage32.

diff --git a/windows/message.c b/windows/message.c
index 84e9151..1072c84 100644
--- a/windows/message.c
+++ b/windows/message.c
@@ -934,6 +934,37 @@
 }
 
 /***********************************************************************
+ *         WIN16_PeekMessage32   (USER.819)
+ */
+BOOL16 WINAPI WIN16_PeekMessage32( LPMSG16_32 lpmsg16_32, HWND16 hwnd,
+               UINT16 first, UINT16 last, UINT16 flags, BOOL16 wHaveParamHigh )
+{
+    if (wHaveParamHigh == FALSE)
+    {
+        lpmsg16_32->wParamHigh = 0;
+        return PeekMessage16(&(lpmsg16_32->msg), hwnd, first, last, flags);
+    }
+    else
+    {
+        MSG32 msg32;
+        BOOL16 ret;
+
+        ret = (BOOL16)PeekMessage32A(&msg32, (HWND32)hwnd,
+                                   (UINT32)first, (UINT32)last, (UINT32)flags);
+        lpmsg16_32->msg.hwnd    = msg32.hwnd;
+        lpmsg16_32->msg.message = msg32.message;
+        lpmsg16_32->msg.wParam  = LOWORD(msg32.wParam);
+        lpmsg16_32->msg.lParam  = msg32.lParam;
+        lpmsg16_32->msg.time    = msg32.time;
+        lpmsg16_32->msg.pt.x    = (INT16)msg32.pt.x;
+        lpmsg16_32->msg.pt.y    = (INT16)msg32.pt.y;
+        lpmsg16_32->wParamHigh  = HIWORD(msg32.wParam);
+        return ret;
+    }
+}
+
+
+/***********************************************************************
  *         PeekMessageA
  */
 BOOL32 WINAPI PeekMessage32A( LPMSG32 lpmsg, HWND32 hwnd,
@@ -1001,6 +1032,39 @@
 }
 
 /***********************************************************************
+ *          WIN16_GetMessage32   (USER.820)
+ */
+BOOL16 WIN16_GetMessage32( SEGPTR msg16_32, HWND16 hWnd, UINT16 first,
+                     UINT16 last, BOOL16 wHaveParamHigh )
+{
+    MSG16_32 *lpmsg16_32 = (MSG16_32 *)PTR_SEG_TO_LIN(msg16_32);
+
+    if (wHaveParamHigh == FALSE) /* normal GetMessage16 call */
+    {
+
+        lpmsg16_32->wParamHigh = 0; /* you never know... */
+        /* WARNING: msg16_32->msg has to be the first variable in the struct */ 
+        return GetMessage16(msg16_32, hWnd, first, last);
+    }
+    else
+    {
+        MSG32 msg32;
+        BOOL16 ret;
+
+        ret = (BOOL16)GetMessage32A(&msg32, hWnd, first, last);
+        lpmsg16_32->msg.hwnd	= msg32.hwnd;
+        lpmsg16_32->msg.message	= msg32.message;
+        lpmsg16_32->msg.wParam	= LOWORD(msg32.wParam);
+        lpmsg16_32->msg.lParam	= msg32.lParam;
+        lpmsg16_32->msg.time	= msg32.time;
+        lpmsg16_32->msg.pt.x	= (INT16)msg32.pt.x;
+        lpmsg16_32->msg.pt.y	= (INT16)msg32.pt.y;
+        lpmsg16_32->wParamHigh	= HIWORD(msg32.wParam);
+        return ret;
+    }
+}
+
+/***********************************************************************
  *          GetMessage32A   (USER32.270)
  */
 BOOL32 WINAPI GetMessage32A(MSG32* lpmsg,HWND32 hwnd,UINT32 min,UINT32 max)
@@ -1704,6 +1768,22 @@
 
 
 /***********************************************************************
+ *           WIN16_TranslateMessage32   (USER.821)
+ */
+BOOL16 WINAPI WIN16_TranslateMessage32( const MSG16_32 *msg, BOOL16 wHaveParamHigh )
+{
+    WPARAM32 wParam;
+
+    if (wHaveParamHigh)
+        wParam = MAKELONG(msg->msg.wParam, msg->wParamHigh);
+    else
+        wParam = (WPARAM32)msg->msg.wParam;
+
+    return MSG_DoTranslateMessage( msg->msg.message, msg->msg.hwnd,
+                                   wParam, msg->msg.lParam );
+}
+
+/***********************************************************************
  *           TranslateMessage32   (USER32.556)
  */
 BOOL32 WINAPI TranslateMessage32( const MSG32 *msg )
@@ -1759,6 +1839,28 @@
 
 
 /***********************************************************************
+ *           WIN16_DispatchMessage32   (USER.822)
+ */
+LONG WINAPI WIN16_DispatchMessage32( const MSG16_32* lpmsg16_32, BOOL16 wHaveParamHigh )
+{
+    if (wHaveParamHigh == FALSE)
+        return DispatchMessage16(&(lpmsg16_32->msg));
+    else
+    {
+        MSG32 msg;
+
+        msg.hwnd = lpmsg16_32->msg.hwnd;
+        msg.message = lpmsg16_32->msg.message;
+        msg.wParam = MAKELONG(lpmsg16_32->msg.wParam, lpmsg16_32->wParamHigh);
+        msg.lParam = lpmsg16_32->msg.lParam;
+        msg.time = lpmsg16_32->msg.time;
+        msg.pt.x = (INT32)lpmsg16_32->msg.pt.x;
+        msg.pt.y = (INT32)lpmsg16_32->msg.pt.y;
+        return DispatchMessage32A(&msg);
+    }
+}
+
+/***********************************************************************
  *           DispatchMessage32A   (USER32.141)
  */
 LONG WINAPI DispatchMessage32A( const MSG32* msg )