Perform 16/32A/32W message mapping for posted messages.

diff --git a/include/message.h b/include/message.h
index add4323..fd86651 100644
--- a/include/message.h
+++ b/include/message.h
@@ -13,9 +13,9 @@
 extern DWORD MSG_WineStartTicks;  /* Ticks at Wine startup */
 
 /* message.c */
-extern BOOL MSG_InternalGetMessage( MSG *msg, HWND hwnd,
-                                      HWND hwndOwner, WPARAM code,
-                                      WORD flags, BOOL sendIdle, BOOL* idleSent );
+extern BOOL MSG_InternalGetMessage( int type, MSG *msg, HWND hwnd,
+                                    HWND hwndOwner, WPARAM code,
+                                    WORD flags, BOOL sendIdle, BOOL* idleSent );
 
 /* timer.c */
 extern BOOL TIMER_Init( void );
diff --git a/include/queue.h b/include/queue.h
index 058707e..3448c82 100644
--- a/include/queue.h
+++ b/include/queue.h
@@ -15,13 +15,19 @@
   /* Message as stored in the queue (contains the extraInfo field) */
 typedef struct tagQMSG
 {
+    int   type;
     MSG   msg;
-    DWORD   extraInfo;  /* Only in 3.1 */
+    DWORD extraInfo;  /* Only in 3.1 */
     
     struct tagQMSG *nextMsg;
     struct tagQMSG *prevMsg;
 } QMSG;
 
+#define QMSG_WIN16    0
+#define QMSG_WIN32A   1
+#define QMSG_WIN32W   2
+#define QMSG_HARDWARE 3
+
 
 typedef struct tagSMSG
 {
@@ -160,7 +166,7 @@
 extern BOOL QUEUE_CreateSysMsgQueue( int size );
 extern BOOL QUEUE_DeleteMsgQueue( HQUEUE16 hQueue );
 extern HTASK16 QUEUE_GetQueueTask( HQUEUE16 hQueue );
-extern BOOL QUEUE_AddMsg( HQUEUE16 hQueue, MSG * msg, DWORD extraInfo );
+extern BOOL QUEUE_AddMsg( HQUEUE16 hQueue, int type, MSG * msg, DWORD extraInfo );
 extern QMSG* QUEUE_FindMsg( MESSAGEQUEUE * msgQueue, HWND hwnd,
                           int first, int last );
 extern void QUEUE_RemoveMsg( MESSAGEQUEUE * msgQueue, QMSG *qmsg );