- Fix headers to include less or smaller header files.
- Fix header and source files to include missing header files to avoid
  warnings and errors.

diff --git a/include/cursoricon.h b/include/cursoricon.h
index 92d5c70..470b887 100644
--- a/include/cursoricon.h
+++ b/include/cursoricon.h
@@ -7,7 +7,7 @@
 #ifndef __WINE_CURSORICON_H
 #define __WINE_CURSORICON_H
 
-#include "wingdi.h"
+#include "wintypes.h"
 
 #pragma pack(1)
 
diff --git a/include/dde_atom.h b/include/dde_atom.h
index dcc0e84..243dae4 100644
--- a/include/dde_atom.h
+++ b/include/dde_atom.h
@@ -12,7 +12,7 @@
 
 #ifdef CONFIG_IPC
 
-#include "windows.h"
+#include "wintypes.h"
 
 #define DDE_ATOMS 157		   /* a prime number for hashing */
 
diff --git a/include/ddraw.h b/include/ddraw.h
index fb973c4..5c568e0 100644
--- a/include/ddraw.h
+++ b/include/ddraw.h
@@ -6,7 +6,7 @@
 #include <X11/extensions/XShm.h>
 #endif /* defined(HAVE_LIBXXSHM) */
 
-#include "winbase.h" /* LARGE_INTEGER ... */
+#include "winnt.h" /* LARGE_INTEGER ... */
 #include "wingdi.h" /* PALETTE stuff ... */
 #include "wine/obj_base.h"
 
diff --git a/include/dispdib.h b/include/dispdib.h
index 87cffd8..c1e9728 100644
--- a/include/dispdib.h
+++ b/include/dispdib.h
@@ -8,7 +8,7 @@
 #ifndef __WINE_DISPDIB_H
 #define __WINE_DISPDIB_H
 
-#include "wingdi.h"
+#include "wingdi.h" /* for LPBITMAPINFO */
 
 /* error codes */
 #define DISPLAYDIB_NOERROR        0x0000
diff --git a/include/dosexe.h b/include/dosexe.h
index a439bfe..1d2aef1 100644
--- a/include/dosexe.h
+++ b/include/dosexe.h
@@ -8,7 +8,7 @@
 #define __WINE_DOSEXE_H
 
 #include <sys/types.h> /* pid_t */
-#include "winbase.h"
+#include "winbase.h"   /* for LPSTARTUPINFO32A */
 #include "sig_context.h"
 
 typedef struct _DOSTASK {
diff --git a/include/dsound.h b/include/dsound.h
index 418de11..3d874cf 100644
--- a/include/dsound.h
+++ b/include/dsound.h
@@ -1,7 +1,7 @@
 #ifndef __WINE_DSOUND_H
 #define __WINE_DSOUND_H
 
-#include "wintypes.h"
+#include "winbase.h"     /* for CRITICAL_SECTION */
 #include "mmsystem.h"
 #include "d3d.h"			/*FIXME: Need to break out d3dtypes.h */
 
diff --git a/include/mmsystem.h b/include/mmsystem.h
index 8c974a0..a86b5ff 100644
--- a/include/mmsystem.h
+++ b/include/mmsystem.h
@@ -8,6 +8,7 @@
 #ifdef __cplusplus
 extern "C" {
 #endif 
+#include "wintypes.h"
 
 typedef LPSTR		    HPSTR;          /* a huge version of LPSTR */
 typedef LPCSTR			HPCSTR;         /* a huge version of LPCSTR */
diff --git a/include/path.h b/include/path.h
index 8263e2a..6bc39ca 100644
--- a/include/path.h
+++ b/include/path.h
@@ -7,6 +7,8 @@
 #ifndef __WINE_PATH_H
 #define __WINE_PATH_H
 
+#include "wintypes.h"
+
 /* It should not be necessary to access the contents of the GdiPath
  * structure directly; if you find that the exported functions don't
  * allow you to do what you want, then please place a new exported
diff --git a/include/progress.h b/include/progress.h
index 2d506f2..fdd5415 100644
--- a/include/progress.h
+++ b/include/progress.h
@@ -7,6 +7,8 @@
 #ifndef __WINE_PROGRESS_H
 #define __WINE_PROGRESS_H
 
+#include "wintypes.h"
+
 typedef struct
 {
   INT32       CurVal;       /* Current progress value */
diff --git a/include/queue.h b/include/queue.h
index 483f274..13ebb49 100644
--- a/include/queue.h
+++ b/include/queue.h
@@ -8,7 +8,7 @@
 #define __WINE_QUEUE_H
 
 #include "wintypes.h"
-#include "wine/winuser16.h"
+#include "winuser.h"
 #include "thread.h"
 
 
diff --git a/include/resource.h b/include/resource.h
index fdda758..cdc2260 100644
--- a/include/resource.h
+++ b/include/resource.h
@@ -7,6 +7,8 @@
 #ifndef __WINE_RESOURCE_H
 #define __WINE_RESOURCE_H
 
+#include "wintypes.h"
+
 #ifndef __WRC_RSC_H
 #include "wrc_rsc.h"
 #endif
diff --git a/include/struct32.h b/include/struct32.h
index f714588..a239ece 100644
--- a/include/struct32.h
+++ b/include/struct32.h
@@ -3,6 +3,7 @@
 #define __WINE__STRUCT32_H
 
 #include "winbase.h"
+#include "wine/winuser16.h"
 #include "queue.h"
 
 extern void STRUCT32_MINMAXINFO32to16( const MINMAXINFO32*, MINMAXINFO16* );
diff --git a/include/updown.h b/include/updown.h
index dbb597c..e33ab22 100644
--- a/include/updown.h
+++ b/include/updown.h
@@ -7,6 +7,9 @@
 #ifndef __WINE_UPDOWN_H
 #define __WINE_UPDOWN_H
 
+#include "wintypes.h"
+#include "commctrl.h"
+
 typedef struct
 {
   UINT32      AccelCount;   /* Number of elements in AccelVect */
diff --git a/include/windows.h b/include/windows.h
index 4e84d74..f4a2003 100644
--- a/include/windows.h
+++ b/include/windows.h
@@ -13,11 +13,11 @@
 #include "winreg.h"
 #include "winnetwk.h"
 #include "winver.h"
-#include "winreg.h"
 #include "lzexpand.h"
 #include "shellapi.h"
 #include "ole2.h"
 #include "winnls.h"
+#include "objbase.h"
 
 /* FIXME: remove the following includes which are not in SDK */
 #include "ntdll.h"
diff --git a/include/winpos.h b/include/winpos.h
index 0779a23..5cd0116 100644
--- a/include/winpos.h
+++ b/include/winpos.h
@@ -8,6 +8,7 @@
 #define __WINE_WINPOS_H
 
 #include "win.h"
+#include "wine/winuser16.h" /* for WINDOWPOS16 */
 
 #define DWP_MAGIC  ((INT32)('W' | ('P' << 8) | ('O' << 16) | ('S' << 24)))