Fixed header dependencies to be fully compatible with the Windows
headers (with help from Dimitrie O. Paun).

diff --git a/dlls/shell32/changenotify.c b/dlls/shell32/changenotify.c
index 4c5f20f..faf6a26 100644
--- a/dlls/shell32/changenotify.c
+++ b/dlls/shell32/changenotify.c
@@ -21,6 +21,8 @@
 #include <string.h>
 
 #include "wine/debug.h"
+#include "windef.h"
+#include "wingdi.h"
 #include "pidl.h"
 #include "shell32_main.h"
 #include "undocshell.h"
diff --git a/dlls/shell32/classes.c b/dlls/shell32/classes.c
index 64b00a3..0ac39b1 100644
--- a/dlls/shell32/classes.c
+++ b/dlls/shell32/classes.c
@@ -24,10 +24,15 @@
 
 #include <stdlib.h>
 #include <string.h>
+#include <stdarg.h>
 #include <stdio.h>
 #include "wine/debug.h"
 #include "winerror.h"
+#include "windef.h"
+#include "winbase.h"
 #include "winreg.h"
+#include "wingdi.h"
+#include "winuser.h"
 
 #include "shlobj.h"
 #include "shell32_main.h"
diff --git a/dlls/shell32/clipboard.c b/dlls/shell32/clipboard.c
index 4ab2e99..7194824 100644
--- a/dlls/shell32/clipboard.c
+++ b/dlls/shell32/clipboard.c
@@ -35,9 +35,13 @@
  *
  */
 
+#include <stdarg.h>
 #include <string.h>
 
+#include "windef.h"
+#include "winbase.h"
 #include "winreg.h"
+#include "wingdi.h"
 #include "pidl.h"
 #include "undocshell.h"
 #include "shell32_main.h"
diff --git a/dlls/shell32/control.c b/dlls/shell32/control.c
index c4c299c..db27b5d 100644
--- a/dlls/shell32/control.c
+++ b/dlls/shell32/control.c
@@ -18,10 +18,12 @@
  */
 
 #include <assert.h>
+#include <stdarg.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 
+#include "windef.h"
 #include "winbase.h"
 #include "wingdi.h"
 #include "winuser.h"
diff --git a/dlls/shell32/dataobject.c b/dlls/shell32/dataobject.c
index b6dc7da..b4ab270 100644
--- a/dlls/shell32/dataobject.c
+++ b/dlls/shell32/dataobject.c
@@ -23,6 +23,8 @@
 
 #define NONAMELESSUNION
 #define NONAMELESSSTRUCT
+#include "windef.h"
+#include "wingdi.h"
 #include "pidl.h"
 #include "winerror.h"
 #include "shell32_main.h"
diff --git a/dlls/shell32/debughlp.c b/dlls/shell32/debughlp.c
index 6ff3bac..baacf7b 100644
--- a/dlls/shell32/debughlp.c
+++ b/dlls/shell32/debughlp.c
@@ -22,6 +22,8 @@
 #include <stdlib.h>
 #include <string.h>
 #include <stdio.h>
+#include "windef.h"
+#include "wingdi.h"
 #include "pidl.h"
 #include "shlguid.h"
 #include "wine/debug.h"
diff --git a/dlls/shell32/debughlp.h b/dlls/shell32/debughlp.h
index d5c72c3..87166e3 100644
--- a/dlls/shell32/debughlp.h
+++ b/dlls/shell32/debughlp.h
@@ -21,7 +21,11 @@
 #ifndef __WINE_SHELL32_DEBUGHLP_H
 #define __WINE_SHELL32_DEBUGHLP_H
 
+#include <stdarg.h>
+
+#include "windef.h"
 #include "winbase.h"
+#include "winuser.h"
 #include "shlobj.h"
 
 extern void pdump (LPCITEMIDLIST pidl);
diff --git a/dlls/shell32/dialogs.c b/dlls/shell32/dialogs.c
index 501e823..cb8146d 100644
--- a/dlls/shell32/dialogs.c
+++ b/dlls/shell32/dialogs.c
@@ -22,9 +22,14 @@
 #include "wine/port.h"
 
 #include <string.h>
+#include <stdarg.h>
 #include <stdio.h>
 #include "winerror.h"
+#include "windef.h"
+#include "winbase.h"
 #include "winreg.h"
+#include "wingdi.h"
+#include "winuser.h"
 #include "commdlg.h"
 #include "wine/debug.h"
 
diff --git a/dlls/shell32/dragdrophelper.c b/dlls/shell32/dragdrophelper.c
index 308f487..68c3621 100644
--- a/dlls/shell32/dragdrophelper.c
+++ b/dlls/shell32/dragdrophelper.c
@@ -22,14 +22,18 @@
 #include "config.h"
 #include "wine/port.h"
 
+#include <stdarg.h>
 #include <string.h>
 
+#include "windef.h"
 #include "winbase.h"
 #include "winreg.h"
 
 #include "objbase.h"
 #include "ole2.h"
 #include "shlguid.h"
+#include "wingdi.h"
+#include "winuser.h"
 #include "shlobj.h"
 
 #include "wine/debug.h"
diff --git a/dlls/shell32/enumidlist.c b/dlls/shell32/enumidlist.c
index d2acc4b..283a5dc 100644
--- a/dlls/shell32/enumidlist.c
+++ b/dlls/shell32/enumidlist.c
@@ -18,9 +18,12 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
+#include <stdarg.h>
 #include <stdlib.h>
 #include <string.h>
 #include "wine/debug.h"
+#include "windef.h"
+#include "winbase.h"
 #include "winreg.h"
 #include "undocshell.h"
 #include "shlwapi.h"
diff --git a/dlls/shell32/folders.c b/dlls/shell32/folders.c
index db527e8..6f12b12 100644
--- a/dlls/shell32/folders.c
+++ b/dlls/shell32/folders.c
@@ -18,10 +18,12 @@
  */
 
 #include <stdlib.h>
+#include <stdarg.h>
 #include <stdio.h>
 #include <string.h>
 
 #include "windef.h"
+#include "winbase.h"
 #include "objbase.h"
 #include "undocshell.h"
 #include "shlguid.h"
diff --git a/dlls/shell32/iconcache.c b/dlls/shell32/iconcache.c
index 2ae0676..8ef9488 100644
--- a/dlls/shell32/iconcache.c
+++ b/dlls/shell32/iconcache.c
@@ -20,13 +20,14 @@
 
 #include "config.h"
 
+#include <stdarg.h>
 #include <string.h>
 #include <sys/types.h>
 #ifdef HAVE_UNISTD_H
 # include <unistd.h>
 #endif
-#include "winbase.h"
 #include "windef.h"
+#include "winbase.h"
 #include "wingdi.h"
 #include "winuser.h"
 #include "winreg.h"
@@ -36,6 +37,7 @@
 #include "wine/debug.h"
 
 #include "shellapi.h"
+#include "objbase.h"
 #include "shlguid.h"
 #include "pidl.h"
 #include "shell32_main.h"
diff --git a/dlls/shell32/memorystream.c b/dlls/shell32/memorystream.c
index 0bcd5f8..93f9d7a 100644
--- a/dlls/shell32/memorystream.c
+++ b/dlls/shell32/memorystream.c
@@ -26,10 +26,14 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
+#include <stdarg.h>
 #include <string.h>
 
+#include "windef.h"
 #include "winbase.h"
 #include "winerror.h"
+#include "winuser.h"
+#include "wingdi.h"
 #include "shlobj.h"
 #include "wine/debug.h"
 #include "shell32_main.h"
diff --git a/dlls/shell32/pidl.c b/dlls/shell32/pidl.c
index 96a7626..26bf730 100644
--- a/dlls/shell32/pidl.c
+++ b/dlls/shell32/pidl.c
@@ -26,10 +26,13 @@
 #include "wine/port.h"
 
 #include <ctype.h>
+#include <stdarg.h>
 #include <stdlib.h>
 #include <string.h>
+#include "windef.h"
 #include "winbase.h"
 #include "winreg.h"
+#include "objbase.h"
 #include "shlguid.h"
 #include "winerror.h"
 #include "winnls.h"
diff --git a/dlls/shell32/pidl.h b/dlls/shell32/pidl.h
index b963382..d28f8f0 100644
--- a/dlls/shell32/pidl.h
+++ b/dlls/shell32/pidl.h
@@ -34,6 +34,11 @@
 #ifndef __WINE_PIDL_H
 #define __WINE_PIDL_H
 
+#include <stdarg.h>
+
+#include "windef.h"
+#include "winbase.h"
+#include "winuser.h"
 #include "shlobj.h"
 
 /*
diff --git a/dlls/shell32/regsvr.c b/dlls/shell32/regsvr.c
index a023a06..c8599a6 100644
--- a/dlls/shell32/regsvr.c
+++ b/dlls/shell32/regsvr.c
@@ -18,6 +18,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
+#include <stdarg.h>
 #include <string.h>
 
 #include "windef.h"
diff --git a/dlls/shell32/shell.c b/dlls/shell32/shell.c
index c2b8dc0..376a985 100644
--- a/dlls/shell32/shell.c
+++ b/dlls/shell32/shell.c
@@ -23,6 +23,7 @@
 #include "config.h"
 #include "wine/port.h"
 
+#include <stdarg.h>
 #include <stdlib.h>
 #include <string.h>
 #ifdef HAVE_UNISTD_H
@@ -31,11 +32,14 @@
 #include <ctype.h>
 
 #include "windef.h"
+#include "winbase.h"
 #include "winerror.h"
 #include "winreg.h"
 #include "wownt32.h"
 #include "dlgs.h"
 #include "shellapi.h"
+#include "winuser.h"
+#include "wingdi.h"
 #include "shlobj.h"
 #include "shlwapi.h"
 #include "ddeml.h"
diff --git a/dlls/shell32/shell32_main.c b/dlls/shell32/shell32_main.c
index bfdff49..e13205e 100644
--- a/dlls/shell32/shell32_main.c
+++ b/dlls/shell32/shell32_main.c
@@ -23,13 +23,17 @@
 
 #include <stdlib.h>
 #include <string.h>
+#include <stdarg.h>
 #include <stdio.h>
 
 #include "windef.h"
+#include "winbase.h"
 #include "winerror.h"
 #include "winreg.h"
 #include "dlgs.h"
 #include "shellapi.h"
+#include "winuser.h"
+#include "wingdi.h"
 #include "shlobj.h"
 #include "shlguid.h"
 #include "shlwapi.h"
diff --git a/dlls/shell32/shell32_main.h b/dlls/shell32/shell32_main.h
index a5be854..77b6a96 100644
--- a/dlls/shell32/shell32_main.h
+++ b/dlls/shell32/shell32_main.h
@@ -22,6 +22,13 @@
 #ifndef __WINE_SHELL_MAIN_H
 #define __WINE_SHELL_MAIN_H
 
+#include <stdarg.h>
+
+#include "windef.h"
+#include "winbase.h"
+#include "wingdi.h"
+#include "winuser.h"
+#include "winnls.h"
 #include "commctrl.h"
 #include "docobj.h"
 #include "undocshell.h"
diff --git a/dlls/shell32/shellfolder.h b/dlls/shell32/shellfolder.h
index 140a58c..8c8901e 100644
--- a/dlls/shell32/shellfolder.h
+++ b/dlls/shell32/shellfolder.h
@@ -21,7 +21,11 @@
 #ifndef __WINE_SHELLFOLDER_HELP_H
 #define __WINE_SHELLFOLDER_HELP_H
 
+#include <stdarg.h>
+
+#include "windef.h"
 #include "winbase.h"
+#include "winuser.h"
 
 #include "shlobj.h"
 
diff --git a/dlls/shell32/shelllink.c b/dlls/shell32/shelllink.c
index ddd1c4b..25a39a5 100644
--- a/dlls/shell32/shelllink.c
+++ b/dlls/shell32/shelllink.c
@@ -22,6 +22,7 @@
 
 #include <ctype.h>
 #include <string.h>
+#include <stdarg.h>
 #include <stdio.h>
 #ifdef HAVE_UNISTD_H
 # include <unistd.h>
@@ -34,10 +35,13 @@
 #include "wine/debug.h"
 #include "wine/port.h"
 #include "winerror.h"
+#include "windef.h"
 #include "winbase.h"
 #include "winnls.h"
 #include "winreg.h"
 
+#include "winuser.h"
+#include "wingdi.h"
 #include "shlobj.h"
 #include "undocshell.h"
 
diff --git a/dlls/shell32/shellole.c b/dlls/shell32/shellole.c
index 8a14f4c..a743871 100644
--- a/dlls/shell32/shellole.c
+++ b/dlls/shell32/shellole.c
@@ -21,10 +21,15 @@
 
 #include "config.h"
 
+#include <stdarg.h>
 #include <stdlib.h>
 #include <string.h>
 
+#include "windef.h"
+#include "winbase.h"
 #include "shellapi.h"
+#include "wingdi.h"
+#include "winuser.h"
 #include "shlobj.h"
 #include "shlguid.h"
 #include "winreg.h"
@@ -36,7 +41,6 @@
 
 #include "wine/debug.h"
 #include "shlwapi.h"
-#include "winuser.h"
 #include "debughlp.h"
 
 WINE_DEFAULT_DEBUG_CHANNEL(shell);
diff --git a/dlls/shell32/shellord.c b/dlls/shell32/shellord.c
index 68908d2..b137cdf 100644
--- a/dlls/shell32/shellord.c
+++ b/dlls/shell32/shellord.c
@@ -22,14 +22,20 @@
 #include "config.h"
 
 #include <string.h>
+#include <stdarg.h>
 #include <stdio.h>
 #include "winerror.h"
+#include "windef.h"
+#include "winbase.h"
 #include "winreg.h"
 #include "wine/debug.h"
 #include "winnls.h"
 
 #include "shellapi.h"
+#include "objbase.h"
 #include "shlguid.h"
+#include "wingdi.h"
+#include "winuser.h"
 #include "shlobj.h"
 #include "shell32_main.h"
 #include "undocshell.h"
diff --git a/dlls/shell32/shellpath.c b/dlls/shell32/shellpath.c
index f6976f3..fa3b276 100644
--- a/dlls/shell32/shellpath.c
+++ b/dlls/shell32/shellpath.c
@@ -26,6 +26,7 @@
 #include "config.h"
 #include "wine/port.h"
 
+#include <stdarg.h>
 #include <string.h>
 #include <ctype.h>
 #include "wine/debug.h"
@@ -33,6 +34,8 @@
 #include "winbase.h"
 #include "winnls.h"
 #include "winreg.h"
+#include "wingdi.h"
+#include "winuser.h"
 
 #include "shlobj.h"
 #include "shell32_main.h"
diff --git a/dlls/shell32/shellreg.c b/dlls/shell32/shellreg.c
index ed4b5e3..51e9fa5 100644
--- a/dlls/shell32/shellreg.c
+++ b/dlls/shell32/shellreg.c
@@ -21,9 +21,14 @@
 #include "config.h"
 
 #include <string.h>
+#include <stdarg.h>
 #include <stdio.h>
 
+#include "windef.h"
+#include "winbase.h"
 #include "shellapi.h"
+#include "wingdi.h"
+#include "winuser.h"
 #include "shlobj.h"
 #include "winerror.h"
 #include "winreg.h"
diff --git a/dlls/shell32/shellstring.c b/dlls/shell32/shellstring.c
index ad7b2f4..d48f707 100644
--- a/dlls/shell32/shellstring.c
+++ b/dlls/shell32/shellstring.c
@@ -17,15 +17,19 @@
  */
 
 #include <string.h>
+#include <stdarg.h>
 #include <stdio.h>
 #include <ctype.h>
 #include <stdlib.h>
 
 #define NONAMELESSUNION
 #define NONAMELESSSTRUCT
+#include "windef.h"
 #include "winbase.h"
 #include "winnls.h"
 #include "winerror.h"
+#include "wingdi.h"
+#include "winuser.h"
 #include "winreg.h"
 
 #include "shlobj.h"
diff --git a/dlls/shell32/shfldr_desktop.c b/dlls/shell32/shfldr_desktop.c
index 0459d65..5fbd311 100644
--- a/dlls/shell32/shfldr_desktop.c
+++ b/dlls/shell32/shfldr_desktop.c
@@ -25,13 +25,16 @@
 
 #include <stdlib.h>
 #include <string.h>
+#include <stdarg.h>
 #include <stdio.h>
 
 #define NONAMELESSUNION
 #define NONAMELESSSTRUCT
 #include "winerror.h"
+#include "windef.h"
 #include "winbase.h"
 #include "winreg.h"
+#include "wingdi.h"
 
 #include "ole2.h"
 #include "shlguid.h"
diff --git a/dlls/shell32/shfldr_fs.c b/dlls/shell32/shfldr_fs.c
index 820ee17..e15f869 100644
--- a/dlls/shell32/shfldr_fs.c
+++ b/dlls/shell32/shfldr_fs.c
@@ -25,13 +25,16 @@
 
 #include <stdlib.h>
 #include <string.h>
+#include <stdarg.h>
 #include <stdio.h>
 
 #define NONAMELESSUNION
 #define NONAMELESSSTRUCT
 #include "winerror.h"
+#include "windef.h"
 #include "winbase.h"
 #include "winreg.h"
+#include "wingdi.h"
 
 #include "ole2.h"
 #include "shlguid.h"
diff --git a/dlls/shell32/shfldr_mycomp.c b/dlls/shell32/shfldr_mycomp.c
index 5bdf9ce..157c488 100644
--- a/dlls/shell32/shfldr_mycomp.c
+++ b/dlls/shell32/shfldr_mycomp.c
@@ -25,14 +25,17 @@
 
 #include <stdlib.h>
 #include <string.h>
+#include <stdarg.h>
 #include <stdio.h>
 
 #define NONAMELESSUNION
 #define NONAMELESSSTRUCT
 #include "winerror.h"
+#include "windef.h"
 #include "winbase.h"
 #include "winreg.h"
 
+#include "wingdi.h"
 #include "pidl.h"
 #include "shlguid.h"
 
diff --git a/dlls/shell32/shlexec.c b/dlls/shell32/shlexec.c
index 55eae28..b490b78 100644
--- a/dlls/shell32/shlexec.c
+++ b/dlls/shell32/shlexec.c
@@ -24,6 +24,7 @@
 
 #include <stdlib.h>
 #include <string.h>
+#include <stdarg.h>
 #include <stdio.h>
 #ifdef HAVE_UNISTD_H
 # include <unistd.h>
@@ -32,11 +33,14 @@
 #include <assert.h>
 
 #include "windef.h"
+#include "winbase.h"
 #include "winerror.h"
 #include "winreg.h"
 #include "wownt32.h"
 #include "heap.h"
 #include "shellapi.h"
+#include "wingdi.h"
+#include "winuser.h"
 #include "shlobj.h"
 #include "shlwapi.h"
 #include "ddeml.h"
diff --git a/dlls/shell32/shlfileop.c b/dlls/shell32/shlfileop.c
index 75bed82..52f78ed 100644
--- a/dlls/shell32/shlfileop.c
+++ b/dlls/shell32/shlfileop.c
@@ -24,11 +24,16 @@
 #include "config.h"
 #include "wine/port.h"
 
+#include <stdarg.h>
 #include <string.h>
 #include <ctype.h>
 
+#include "windef.h"
+#include "winbase.h"
 #include "winreg.h"
 #include "shellapi.h"
+#include "wingdi.h"
+#include "winuser.h"
 #include "shlobj.h"
 #include "shresdef.h"
 #define NO_SHLWAPI_STREAM
diff --git a/dlls/shell32/shlfolder.c b/dlls/shell32/shlfolder.c
index 7616e67..7506598 100644
--- a/dlls/shell32/shlfolder.c
+++ b/dlls/shell32/shlfolder.c
@@ -27,11 +27,14 @@
 
 #include <stdlib.h>
 #include <string.h>
+#include <stdarg.h>
 #include <stdio.h>
 
 #include "winerror.h"
+#include "windef.h"
 #include "winbase.h"
 #include "winreg.h"
+#include "wingdi.h"
 
 #include "ole2.h"
 #include "shlguid.h"
diff --git a/dlls/shell32/shlmenu.c b/dlls/shell32/shlmenu.c
index 2f47d00..a8cb6d4 100644
--- a/dlls/shell32/shlmenu.c
+++ b/dlls/shell32/shlmenu.c
@@ -18,9 +18,14 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
+#include <stdarg.h>
 #include <string.h>
 
+#include "windef.h"
+#include "winbase.h"
 #include "winreg.h"
+#include "wingdi.h"
+#include "winuser.h"
 #include "shlobj.h"
 #include "undocshell.h"
 #include "shlwapi.h"
diff --git a/dlls/shell32/shlview.c b/dlls/shell32/shlview.c
index c2af179..1b2586f 100644
--- a/dlls/shell32/shlview.c
+++ b/dlls/shell32/shlview.c
@@ -39,6 +39,7 @@
 #include "config.h"
 #include "wine/port.h"
 
+#include <stdarg.h>
 #include <stdlib.h>
 #include <string.h>
 
@@ -48,6 +49,8 @@
 #include "winnls.h"
 #include "servprov.h"
 #include "shlguid.h"
+#include "wingdi.h"
+#include "winuser.h"
 #include "shlobj.h"
 #include "undocshell.h"
 #include "shresdef.h"
diff --git a/dlls/shell32/shpolicy.c b/dlls/shell32/shpolicy.c
index e9818fa..6e36fa1 100644
--- a/dlls/shell32/shpolicy.c
+++ b/dlls/shell32/shpolicy.c
@@ -29,10 +29,12 @@
  * Up to date as of SHELL32 v5.00 (W2K)
  */
 
+#include <stdarg.h>
 #include <stdlib.h>
 #include <string.h>
 
 #include "windef.h"
+#include "winbase.h"
 #include "winerror.h"
 #include "winreg.h"
 
diff --git a/dlls/shell32/shres.rc b/dlls/shell32/shres.rc
index 984f629..81ba94b 100644
--- a/dlls/shell32/shres.rc
+++ b/dlls/shell32/shres.rc
@@ -19,8 +19,10 @@
  */
 
 #include "windef.h"
+#include "winbase.h"
 #include "winuser.h"
 #include "winnls.h"
+#include "wingdi.h"
 #include "shlobj.h"
 #include "shresdef.h"
 
diff --git a/dlls/shell32/shv_bg_cmenu.c b/dlls/shell32/shv_bg_cmenu.c
index 926d784..f024093 100644
--- a/dlls/shell32/shv_bg_cmenu.c
+++ b/dlls/shell32/shv_bg_cmenu.c
@@ -24,6 +24,8 @@
 #define NONAMELESSSTRUCT
 #include "wine/debug.h"
 
+#include "windef.h"
+#include "wingdi.h"
 #include "pidl.h"
 #include "shlguid.h"
 #include "shlobj.h"
diff --git a/dlls/shell32/shv_item_cmenu.c b/dlls/shell32/shv_item_cmenu.c
index d83b76c..593727d 100644
--- a/dlls/shell32/shv_item_cmenu.c
+++ b/dlls/shell32/shv_item_cmenu.c
@@ -25,6 +25,8 @@
 #include "winerror.h"
 #include "wine/debug.h"
 
+#include "windef.h"
+#include "wingdi.h"
 #include "pidl.h"
 #include "shlguid.h"
 #include "undocshell.h"
diff --git a/dlls/shell32/systray.c b/dlls/shell32/systray.c
index 1b76ea5..55a4b11 100644
--- a/dlls/shell32/systray.c
+++ b/dlls/shell32/systray.c
@@ -27,11 +27,15 @@
 #ifdef HAVE_UNISTD_H
 # include <unistd.h>
 #endif
+#include <stdarg.h>
 #include <stdlib.h>
 #include <string.h>
 
+#include "windef.h"
 #include "winbase.h"
 #include "winnls.h"
+#include "wingdi.h"
+#include "winuser.h"
 #include "shlobj.h"
 #include "shellapi.h"
 #include "shell32_main.h"
diff --git a/dlls/shell32/tests/generated.c b/dlls/shell32/tests/generated.c
index a7c46b5..837bd46 100644
--- a/dlls/shell32/tests/generated.c
+++ b/dlls/shell32/tests/generated.c
@@ -14,8 +14,11 @@
 #include <stdarg.h>
 
 #include "windef.h"
+#include "winbase.h"
 #include "wtypes.h"
 #include "shellapi.h"
+#include "winuser.h"
+#include "wingdi.h"
 #include "shlobj.h"
 
 #include "wine/test.h"
diff --git a/dlls/shell32/tests/shlfileop.c b/dlls/shell32/tests/shlfileop.c
index 03f1f5c..6bb5d27 100644
--- a/dlls/shell32/tests/shlfileop.c
+++ b/dlls/shell32/tests/shlfileop.c
@@ -18,6 +18,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
+#include <stdarg.h>
 #include <stdio.h>
  
 #include "windef.h"
diff --git a/dlls/shell32/undocshell.h b/dlls/shell32/undocshell.h
index 595b95b..079c9fa 100644
--- a/dlls/shell32/undocshell.h
+++ b/dlls/shell32/undocshell.h
@@ -19,7 +19,13 @@
 #ifndef __WINE_UNDOCSHELL_H
 #define __WINE_UNDOCSHELL_H
 
+#include <stdarg.h>
+
 #include "windef.h"
+#include "winbase.h"
+#include "wingdi.h"
+#include "winuser.h"
+#include "winnls.h"
 #include "commctrl.h"
 #include "shlobj.h"