Removed a lot of unnecessary includes and fixed the compile errors.

diff --git a/controls/button.c b/controls/button.c
index cfbcc26..de52ff8 100644
--- a/controls/button.c
+++ b/controls/button.c
@@ -8,6 +8,7 @@
 #include <string.h>
 #include "win.h"
 #include "button.h"
+#include "winbase.h"
 #include "windef.h"
 #include "wingdi.h"
 #include "wine/winuser16.h"
diff --git a/controls/edit.c b/controls/edit.c
index 25ea9d4..c10729e 100644
--- a/controls/edit.c
+++ b/controls/edit.c
@@ -14,6 +14,8 @@
 #include "config.h"
 
 #include <string.h>
+
+#include "winbase.h"
 #include "winnt.h"
 #include "win.h"
 #include "wine/winbase16.h"
diff --git a/controls/menu.c b/controls/menu.c
index 786782a..fa915d8 100644
--- a/controls/menu.c
+++ b/controls/menu.c
@@ -28,6 +28,7 @@
 #include "nonclient.h"
 #include "user.h"
 #include "message.h"
+#include "queue.h"
 #include "tweak.h"
 
 #include "debugtools.h"
diff --git a/debugger/stack.c b/debugger/stack.c
index 62f9b43..46a2d1d 100644
--- a/debugger/stack.c
+++ b/debugger/stack.c
@@ -7,10 +7,13 @@
  */
 
 #include "config.h"
+
 #include <stdio.h>
 #include <stdlib.h>
+
 #include "debugger.h"
 #include "stackframe.h"
+#include "winbase.h"
 
 #ifdef __i386__
 /*
diff --git a/dlls/comctl32/commctrl.c b/dlls/comctl32/commctrl.c
index b6bfa13..3168ce3 100644
--- a/dlls/comctl32/commctrl.c
+++ b/dlls/comctl32/commctrl.c
@@ -6,6 +6,8 @@
  *
  */
 
+#include <string.h>
+
 #include "winbase.h"
 #include "heap.h"
 #include "commctrl.h"
diff --git a/dlls/winsock/async.c b/dlls/winsock/async.c
index df88bd7..431d7aa 100644
--- a/dlls/winsock/async.c
+++ b/dlls/winsock/async.c
@@ -77,6 +77,8 @@
 #endif
 
 #include "wine/winbase16.h"
+#include "wingdi.h"
+#include "winuser.h"
 #include "winsock.h"
 #include "winnt.h"
 #include "heap.h"
diff --git a/dlls/winsock/socket.c b/dlls/winsock/socket.c
index e821e8a..9d202c5 100644
--- a/dlls/winsock/socket.c
+++ b/dlls/winsock/socket.c
@@ -71,6 +71,8 @@
 #endif
 
 #include "wine/winbase16.h"
+#include "wingdi.h"
+#include "winuser.h"
 #include "winsock2.h"
 #include "winnt.h"
 #include "heap.h"
diff --git a/include/dce.h b/include/dce.h
index 3fa10cb..3913c12 100644
--- a/include/dce.h
+++ b/include/dce.h
@@ -7,7 +7,9 @@
 #ifndef __WINE_DCE_H
 #define __WINE_DCE_H
 
-#include "win.h"
+#include "windef.h"
+
+struct tagWND;
 
 /* additional DCX flags 
  */
@@ -49,9 +51,9 @@
 extern void  DCE_Init(void);
 extern DCE*  DCE_AllocDCE( HWND hWnd, DCE_TYPE type );
 extern DCE*  DCE_FreeDCE( DCE *dce );
-extern void  DCE_FreeWindowDCE( WND* );
-extern INT16 DCE_ExcludeRgn( HDC, WND*, HRGN );
+extern void  DCE_FreeWindowDCE( struct tagWND* );
+extern INT16 DCE_ExcludeRgn( HDC, struct tagWND*, HRGN );
 extern HRGN DCE_GetVisRgn( HWND, WORD, HWND, WORD );
-extern BOOL DCE_InvalidateDCE( WND*, const RECT* );
+extern BOOL DCE_InvalidateDCE( struct tagWND*, const RECT* );
 
 #endif  /* __WINE_DCE_H */
diff --git a/include/menu.h b/include/menu.h
index 88e4a5e..855a897 100644
--- a/include/menu.h
+++ b/include/menu.h
@@ -5,7 +5,9 @@
 #ifndef __WINE_MENU_H
 #define __WINE_MENU_H
 
-#include "win.h"
+#include "windef.h"
+
+struct tagWND;
 
 LRESULT WINAPI PopupMenuWndProc( HWND hwnd, UINT message, WPARAM wParam,
                                  LPARAM lParam );
@@ -15,9 +17,9 @@
 extern HMENU MENU_GetSysMenu(HWND hWndOwner, HMENU hSysPopup);
 extern UINT MENU_GetMenuBarHeight( HWND hwnd, UINT menubarWidth,
                                      INT orgX, INT orgY );
-extern BOOL MENU_PatchResidentPopup( HQUEUE16, WND* );
-extern void MENU_TrackMouseMenuBar( WND *wnd, INT ht, POINT pt );
-extern void MENU_TrackKbdMenuBar( WND *wnd, UINT wParam, INT vkey );
+extern BOOL MENU_PatchResidentPopup( HQUEUE16, struct tagWND* );
+extern void MENU_TrackMouseMenuBar( struct tagWND *wnd, INT ht, POINT pt );
+extern void MENU_TrackKbdMenuBar( struct tagWND *wnd, UINT wParam, INT vkey );
 extern UINT MENU_DrawMenuBar( HDC hDC, LPRECT lprect,
                                 HWND hwnd, BOOL suppress_draw );
 extern UINT MENU_FindSubMenu( HMENU *hmenu, HMENU hSubTarget );
diff --git a/include/message.h b/include/message.h
index 2c789e4..b4ff920 100644
--- a/include/message.h
+++ b/include/message.h
@@ -7,13 +7,14 @@
 #ifndef __WINE_MESSAGE_H
 #define __WINE_MESSAGE_H
 
-#include "win.h"
-#include "queue.h"
+#include "windef.h"
+
+struct tagMSG;
 
 extern DWORD MSG_WineStartTicks;  /* Ticks at Wine startup */
 
 /* message.c */
-extern BOOL MSG_InternalGetMessage( int type, MSG *msg, HWND hwnd,
+extern BOOL MSG_InternalGetMessage( int type, struct tagMSG *msg, HWND hwnd,
                                     HWND hwndOwner, WPARAM code,
                                     WORD flags, BOOL sendIdle, BOOL* idleSent );
 
@@ -21,7 +22,7 @@
 extern BOOL TIMER_Init( void );
 extern void TIMER_RemoveWindowTimers( HWND hwnd );
 extern void TIMER_RemoveQueueTimers( HQUEUE16 hqueue );
-extern BOOL TIMER_GetTimerMsg( MSG *msg, HWND hwnd,
+extern BOOL TIMER_GetTimerMsg( struct tagMSG *msg, HWND hwnd,
                                  HQUEUE16 hQueue, BOOL remove );
 
 /* event.c */
diff --git a/include/nonclient.h b/include/nonclient.h
index 8e82b53..8d0f9df 100644
--- a/include/nonclient.h
+++ b/include/nonclient.h
@@ -7,18 +7,20 @@
 #ifndef __WINE_NONCLIENT_H
 #define __WINE_NONCLIENT_H
 
-#include "win.h"
+#include "windef.h"
+
+struct tagWND;
 
 extern LONG   NC_HandleNCPaint( HWND hwnd , HRGN clip);
-extern LONG   NC_HandleNCActivate( WND *pwnd, WPARAM16 wParam );
-extern LONG   NC_HandleNCCalcSize( WND *pWnd, RECT *winRect );
+extern LONG   NC_HandleNCActivate( struct tagWND *pwnd, WPARAM16 wParam );
+extern LONG   NC_HandleNCCalcSize( struct tagWND *pWnd, RECT *winRect );
 extern LONG   NC_HandleNCHitTest( HWND hwnd, POINT16 pt );
-extern LONG   NC_HandleNCLButtonDown( WND* pWnd, WPARAM16 wParam, LPARAM lParam );
-extern LONG   NC_HandleNCLButtonDblClk( WND *pWnd, WPARAM16 wParam, LPARAM lParam);
+extern LONG   NC_HandleNCLButtonDown( struct tagWND* pWnd, WPARAM16 wParam, LPARAM lParam );
+extern LONG   NC_HandleNCLButtonDblClk( struct tagWND *pWnd, WPARAM16 wParam, LPARAM lParam);
 extern LONG   NC_HandleSysCommand( HWND hwnd, WPARAM16 wParam, POINT16 pt );
 extern LONG   NC_HandleSetCursor( HWND hwnd, WPARAM16 wParam, LPARAM lParam );
 extern void   NC_DrawSysButton( HWND hwnd, HDC hdc, BOOL down );
 extern BOOL NC_DrawSysButton95( HWND hwnd, HDC hdc, BOOL down );
-extern BOOL NC_GetSysPopupPos( WND* wndPtr, RECT* rect );
+extern BOOL NC_GetSysPopupPos( struct tagWND* wndPtr, RECT* rect );
 
 #endif /* __WINE_NONCLIENT_H */
diff --git a/include/queue.h b/include/queue.h
index e12c572..d3a6c24 100644
--- a/include/queue.h
+++ b/include/queue.h
@@ -8,6 +8,7 @@
 #define __WINE_QUEUE_H
 
 #include "windef.h"
+#include "winbase.h"
 #include "wingdi.h"
 #include "winuser.h"
 #include "thread.h"
diff --git a/include/stackframe.h b/include/stackframe.h
index 73177c9..80b3073 100644
--- a/include/stackframe.h
+++ b/include/stackframe.h
@@ -8,8 +8,10 @@
 #define __WINE_STACKFRAME_H
 
 #include <string.h>
+
 #include "ldt.h"
 #include "thread.h"
+#include "winnt.h"
 
 #include "pshpack1.h"
 
diff --git a/include/struct32.h b/include/struct32.h
index 6910c54..ca70f92 100644
--- a/include/struct32.h
+++ b/include/struct32.h
@@ -6,7 +6,6 @@
 #include "windef.h"
 #include "wingdi.h"
 #include "wine/winuser16.h"
-#include "queue.h"
 
 extern void STRUCT32_MINMAXINFO32to16( const MINMAXINFO*, MINMAXINFO16* );
 extern void STRUCT32_MINMAXINFO16to32( const MINMAXINFO16*, MINMAXINFO* );
diff --git a/include/thread.h b/include/thread.h
index 882b1e1..88ffd4b 100644
--- a/include/thread.h
+++ b/include/thread.h
@@ -8,12 +8,13 @@
 #define __WINE_THREAD_H
 
 #include "config.h"
-#include "winbase.h"
-#include "syslevel.h"
+
 #include "ntdef.h" /* UNICODE_STRING */
 
 struct _PDB;
 struct __EXCEPTION_FRAME;
+struct _SECURITY_ATTRIBUTES;
+struct tagSYSLEVEL;
 
 /* Thread exception block
 
@@ -84,7 +85,7 @@
     void        *entry_arg;      /* --3 1b4 Entry point arg (was: unknown) */
     DWORD        unknown5[4];    /* --n 1b8 Unknown */
     DWORD        sys_count[4];   /* --3 1c8 Syslevel mutex entry counters */
-    SYSLEVEL    *sys_mutex[4];   /* --3 1d8 Syslevel mutex pointers */
+    struct tagSYSLEVEL *sys_mutex[4];   /* --3 1d8 Syslevel mutex pointers */
     DWORD        unknown6[5];    /* --n 1e8 Unknown */
 
     /* The following are Wine-specific fields (NT: GDI stuff) */
@@ -123,7 +124,7 @@
 extern TEB *THREAD_CreateInitialThread( struct _PDB *pdb, int server_fd );
 extern TEB *THREAD_Create( struct _PDB *pdb, int fd, DWORD flags, 
                            DWORD stack_size, BOOL alloc_stack16,
-                           LPSECURITY_ATTRIBUTES sa, int *server_handle );
+                           struct _SECURITY_ATTRIBUTES *sa, int *server_handle );
 extern BOOL THREAD_IsWin16( TEB *thdb );
 extern TEB *THREAD_IdToTEB( DWORD id );
 
diff --git a/include/win.h b/include/win.h
index 5e7d5dd..ff5c70f 100644
--- a/include/win.h
+++ b/include/win.h
@@ -9,9 +9,8 @@
 
 #include "windef.h"
 #include "wingdi.h"
+#include "winproc.h"
 #include "winuser.h"
-#include "queue.h"
-#include "class.h"
 
 #define WND_MAGIC     0x444e4957  /* 'WIND' */
 
@@ -56,6 +55,7 @@
 struct tagCLASS;
 struct tagDCE;
 struct tagDC;
+struct tagMESSAGEQUEUE;
 struct tagWND_DRIVER;
 
 typedef struct tagWND
@@ -220,7 +220,7 @@
 extern BOOL ICONTITLE_Init( void );
 
 /* windows/focus.c */
-extern void FOCUS_SwitchFocus( MESSAGEQUEUE *pMsgQ, HWND , HWND );
+extern void FOCUS_SwitchFocus( struct tagMESSAGEQUEUE *pMsgQ, HWND , HWND );
 
 /* windows/edit.c */
 extern LRESULT WINAPI EditWndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam );
diff --git a/include/winbase.h b/include/winbase.h
index 95169b6..467fa8a 100644
--- a/include/winbase.h
+++ b/include/winbase.h
@@ -158,7 +158,7 @@
 #define DRIVE_RAMDISK              6
 
 /* The security attributes structure */
-typedef struct
+typedef struct _SECURITY_ATTRIBUTES
 {
     DWORD   nLength;
     LPVOID  lpSecurityDescriptor;
@@ -1764,7 +1764,8 @@
 
 #if defined(__i386__) && defined(__GNUC__)
 
-static inline PVOID WINAPI InterlockedCompareExchange( PVOID *dest, PVOID xchg, PVOID compare )
+extern inline PVOID WINAPI InterlockedCompareExchange( PVOID *dest, PVOID xchg, PVOID compare );
+extern inline PVOID WINAPI InterlockedCompareExchange( PVOID *dest, PVOID xchg, PVOID compare )
 {
     PVOID ret;
     __asm__ __volatile__( "lock; cmpxchgl %2,(%1)"
@@ -1772,7 +1773,8 @@
     return ret;
 }
 
-static inline LONG WINAPI InterlockedExchange( PLONG dest, LONG val )
+extern inline LONG WINAPI InterlockedExchange( PLONG dest, LONG val );
+extern inline LONG WINAPI InterlockedExchange( PLONG dest, LONG val )
 {
     LONG ret;
     __asm__ __volatile__( "lock; xchgl %0,(%1)"
@@ -1780,7 +1782,8 @@
     return ret;
 }
 
-static inline LONG WINAPI InterlockedExchangeAdd( PLONG dest, LONG incr )
+extern inline LONG WINAPI InterlockedExchangeAdd( PLONG dest, LONG incr );
+extern inline LONG WINAPI InterlockedExchangeAdd( PLONG dest, LONG incr )
 {
     LONG ret;
     __asm__ __volatile__( "lock; xaddl %0,(%1)"
@@ -1788,31 +1791,36 @@
     return ret;
 }
 
-static inline LONG WINAPI InterlockedIncrement( PLONG dest )
+extern inline LONG WINAPI InterlockedIncrement( PLONG dest );
+extern inline LONG WINAPI InterlockedIncrement( PLONG dest )
 {
     return InterlockedExchangeAdd( dest, 1 ) + 1;
 }
 
-static inline LONG WINAPI InterlockedDecrement( PLONG dest )
+extern inline LONG WINAPI InterlockedDecrement( PLONG dest );
+extern inline LONG WINAPI InterlockedDecrement( PLONG dest )
 {
     return InterlockedExchangeAdd( dest, -1 ) - 1;
 }
 
-static inline DWORD WINAPI GetLastError(void)
+extern inline DWORD WINAPI GetLastError(void);
+extern inline DWORD WINAPI GetLastError(void)
 {
     DWORD ret;
     __asm__ __volatile__( ".byte 0x64\n\tmovl 0x60,%0" : "=r" (ret) );
     return ret;
 }
 
-static inline DWORD WINAPI GetCurrentThreadId(void)
+extern inline DWORD WINAPI GetCurrentThreadId(void);
+extern inline DWORD WINAPI GetCurrentThreadId(void)
 {
     DWORD ret;
     __asm__ __volatile__( ".byte 0x64\n\tmovl 0x24,%0" : "=r" (ret) );
     return ret;
 }
 
-static inline void WINAPI SetLastError( DWORD err )
+extern inline void WINAPI SetLastError( DWORD err );
+extern inline void WINAPI SetLastError( DWORD err )
 {
     __asm__ __volatile__( ".byte 0x64\n\tmovl %0,0x60" : : "r" (err) : "memory" );
 }
diff --git a/include/wine/winuser16.h b/include/wine/winuser16.h
index cc17562..56b4c6f 100644
--- a/include/wine/winuser16.h
+++ b/include/wine/winuser16.h
@@ -1,11 +1,9 @@
 #ifndef __WINE_WINE_WINUSER16_H
 #define __WINE_WINE_WINUSER16_H
 
+#include "wine/wingdi16.h" /* wingdi.h needed for COLORREF */
 #include "winuser.h" /* winuser.h needed for MSGBOXCALLBACK */
-                     /* wingdi.h needed for COLORREF */
-#include "wine/wingdi16.h"
-
-
+                     
 #include "pshpack1.h"
 
 typedef struct tagCOMSTAT16
diff --git a/include/winpos.h b/include/winpos.h
index c5c5300..9a32f4d 100644
--- a/include/winpos.h
+++ b/include/winpos.h
@@ -7,7 +7,9 @@
 #ifndef __WINE_WINPOS_H
 #define __WINE_WINPOS_H
 
-#include "win.h"
+#include "windef.h"
+
+struct tagWND;
 
 #define DWP_MAGIC  ((INT)('W' | ('P' << 8) | ('O' << 16) | ('S' << 24)))
 
@@ -31,11 +33,11 @@
 } DWP;
 
 extern BOOL WINPOS_RedrawIconTitle( HWND hWnd );
-extern BOOL WINPOS_ShowIconTitle( WND* pWnd, BOOL bShow );
-extern void   WINPOS_GetMinMaxInfo( WND* pWnd, POINT *maxSize,
+extern BOOL WINPOS_ShowIconTitle( struct tagWND* pWnd, BOOL bShow );
+extern void   WINPOS_GetMinMaxInfo( struct tagWND* pWnd, POINT *maxSize,
                                     POINT *maxPos, POINT *minTrack,
                                     POINT *maxTrack );
-extern UINT WINPOS_MinMaximize( WND* pWnd, UINT16 cmd, LPRECT16 lpPos);
+extern UINT WINPOS_MinMaximize( struct tagWND* pWnd, UINT16 cmd, LPRECT16 lpPos);
 extern BOOL WINPOS_SetActiveWindow( HWND hWnd, BOOL fMouse,
                                       BOOL fChangeFocus );
 extern BOOL WINPOS_ChangeActiveWindow( HWND hwnd, BOOL mouseMsg );
@@ -43,11 +45,11 @@
                                   RECT *newWindowRect, RECT *oldWindowRect,
                                   RECT *oldClientRect, WINDOWPOS *winpos,
                                   RECT *newClientRect );
-extern LONG WINPOS_HandleWindowPosChanging16(WND *wndPtr, struct tagWINDOWPOS16 *winpos);
-extern LONG WINPOS_HandleWindowPosChanging(WND *wndPtr, WINDOWPOS *winpos);
-extern INT16 WINPOS_WindowFromPoint( WND* scopeWnd, POINT16 pt, WND **ppWnd );
-extern void WINPOS_CheckInternalPos( WND* wndPtr );
-extern BOOL WINPOS_ActivateOtherWindow(WND* pWnd);
+extern LONG WINPOS_HandleWindowPosChanging16(struct tagWND *wndPtr, struct tagWINDOWPOS16 *winpos);
+extern LONG WINPOS_HandleWindowPosChanging(struct tagWND *wndPtr, WINDOWPOS *winpos);
+extern INT16 WINPOS_WindowFromPoint( struct tagWND* scopeWnd, POINT16 pt, struct tagWND **ppWnd );
+extern void WINPOS_CheckInternalPos( struct tagWND* wndPtr );
+extern BOOL WINPOS_ActivateOtherWindow(struct tagWND* pWnd);
 extern BOOL WINPOS_CreateInternalPosAtom(void);
 
 #endif  /* __WINE_WINPOS_H */
diff --git a/loader/module.c b/loader/module.c
index c7a343b..44018e6 100644
--- a/loader/module.c
+++ b/loader/module.c
@@ -25,6 +25,7 @@
 #include "pe_image.h"
 #include "dosexe.h"
 #include "process.h"
+#include "syslevel.h"
 #include "thread.h"
 #include "selectors.h"
 #include "stackframe.h"
diff --git a/loader/ne/module.c b/loader/ne/module.c
index e061794..b1f55f1 100644
--- a/loader/ne/module.c
+++ b/loader/ne/module.c
@@ -24,6 +24,7 @@
 #include "global.h"
 #include "process.h"
 #include "snoop.h"
+#include "syslevel.h"
 #include "builtin16.h"
 #include "stackframe.h"
 #include "debugtools.h"
diff --git a/misc/debugstr.c b/misc/debugstr.c
index dfcfdad..021007a 100644
--- a/misc/debugstr.c
+++ b/misc/debugstr.c
@@ -5,8 +5,10 @@
 #include <ctype.h>
 
 #include "debugtools.h"
-#include "wtypes.h"
 #include "thread.h"
+#include "winbase.h"
+#include "winnt.h"
+#include "wtypes.h"
 
 /* ---------------------------------------------------------------------- */
 
diff --git a/misc/error.c b/misc/error.c
index 49ed983..00e71f5 100644
--- a/misc/error.c
+++ b/misc/error.c
@@ -8,6 +8,7 @@
 #include <stdio.h>
 #include <string.h>
 
+#include "winbase.h"
 #include "windef.h"
 #include "stackframe.h"
 #include "debugtools.h"
diff --git a/windows/defdlg.c b/windows/defdlg.c
index c35bf2c..15d28cd 100644
--- a/windows/defdlg.c
+++ b/windows/defdlg.c
@@ -6,6 +6,7 @@
  */
 
 #include "windef.h"
+#include "winbase.h"
 #include "wingdi.h"
 #include "wine/winuser16.h"
 #include "dialog.h"
diff --git a/windows/defwnd.c b/windows/defwnd.c
index e7b5705..045aae9 100644
--- a/windows/defwnd.c
+++ b/windows/defwnd.c
@@ -7,6 +7,7 @@
 
 #include <string.h>
 
+#include "class.h"
 #include "win.h"
 #include "user.h"
 #include "heap.h"
diff --git a/windows/dialog.c b/windows/dialog.c
index 5223c77..c5d40e0 100644
--- a/windows/dialog.c
+++ b/windows/dialog.c
@@ -24,6 +24,7 @@
 #include "user.h"
 #include "winproc.h"
 #include "message.h"
+#include "queue.h"
 #include "debugtools.h"
 
 DEFAULT_DEBUG_CHANNEL(dialog);
diff --git a/windows/focus.c b/windows/focus.c
index dc79a53..d99496f 100644
--- a/windows/focus.c
+++ b/windows/focus.c
@@ -14,6 +14,7 @@
 #include "winpos.h"
 #include "hook.h"
 #include "message.h"
+#include "queue.h"
 #include "task.h"
 #include "debugtools.h"
 
diff --git a/windows/input.c b/windows/input.c
index 1e67fccc..b7e537f 100644
--- a/windows/input.c
+++ b/windows/input.c
@@ -27,6 +27,7 @@
 #include "keyboard.h"
 #include "mouse.h"
 #include "message.h"
+#include "queue.h"
 #include "module.h"
 #include "debugtools.h"
 #include "struct32.h"
diff --git a/windows/user.c b/windows/user.c
index 549c022..c72a467 100644
--- a/windows/user.c
+++ b/windows/user.c
@@ -15,6 +15,7 @@
 #include "gdi.h"
 #include "task.h"
 #include "queue.h"
+#include "class.h"
 #include "win.h"
 #include "clipboard.h"
 #include "menu.h"
diff --git a/windows/x11drv/event.c b/windows/x11drv/event.c
index 508b7db..6a53f28 100644
--- a/windows/x11drv/event.c
+++ b/windows/x11drv/event.c
@@ -37,6 +37,7 @@
 #include "options.h"
 #include "queue.h"
 #include "shell.h"
+#include "win.h"
 #include "winpos.h"
 #include "services.h"
 #include "file.h"
diff --git a/windows/x11drv/keyboard.c b/windows/x11drv/keyboard.c
index 7bb5127..acb7592 100644
--- a/windows/x11drv/keyboard.c
+++ b/windows/x11drv/keyboard.c
@@ -29,6 +29,7 @@
 #include "keyboard.h"
 #include "message.h"
 #include "winnls.h"
+#include "win.h"
 #include "x11drv.h"
 
 DEFAULT_DEBUG_CHANNEL(keyboard)