Added internal Wine messages to perform SetWindowPos, ShowWindow and
SetParent in the correct thread.
Replace QUEUE_IsExitingQueue by USER_IsExitingThread.
Store window rectangles in the server.
Prevent DestroyWindow on windows not belonging to the current thread.

diff --git a/include/user.h b/include/user.h
index 6b9dd35..b1aab08 100644
--- a/include/user.h
+++ b/include/user.h
@@ -35,7 +35,14 @@
 
 typedef VOID CALLBACK (*LPMOUSE_EVENT_PROC)(DWORD,DWORD,DWORD,DWORD,DWORD);
 
-struct tagWND;
+/* internal messages codes */
+enum wine_internal_message
+{
+    WM_WINE_DESTROYWINDOW = 0x80000000,
+    WM_WINE_SETWINDOWPOS,
+    WM_WINE_SHOWWINDOW,
+    WM_WINE_SETPARENT
+};
 
 typedef struct tagUSER_DRIVER {
     /* keyboard functions */
@@ -99,6 +106,8 @@
 extern void USER_Unlock(void);
 extern void USER_CheckNotLock(void);
 
+extern BOOL USER_IsExitingThread( DWORD tid );
+
 VOID WINAPI MOUSE_Enable(LPMOUSE_EVENT_PROC lpMouseEventProc);
 VOID WINAPI MOUSE_Disable(VOID);