diff --git a/include/winuser.h b/include/winuser.h
index eada590..009b18c 100644
--- a/include/winuser.h
+++ b/include/winuser.h
@@ -1202,6 +1202,17 @@
 #define DISP_CHANGE_BADMODE    (-2)
 #define DISP_CHANGE_NOTUPDATED (-3)
 #define DISP_CHANGE_BADFLAGS   (-4)
+#define DISP_CHANGE_BADPARAM   (-5)
+
+/* ChangeDisplaySettings.dwFlags */
+#define	CDS_UPDATEREGISTRY	0x00000001
+#define	CDS_TEST		0x00000002
+#define	CDS_FULLSCREEN		0x00000004
+#define	CDS_GLOBAL		0x00000008
+#define	CDS_SET_PRIMARY		0x00000010
+#define	CDS_RESET		0x40000000
+#define	CDS_SETRECT		0x20000000
+#define	CDS_NORESET		0x10000000
 
 /* flags to FormatMessage */
 #define	FORMAT_MESSAGE_ALLOCATE_BUFFER	0x00000100
@@ -3019,6 +3030,12 @@
 LRESULT     WINAPI CallWindowProcW(WNDPROC,HWND,UINT,WPARAM,LPARAM);
 #define     CallWindowProc WINELIB_NAME_AW(CallWindowProc)
 BOOL      WINAPI ChangeClipboardChain(HWND,HWND);
+LONG        WINAPI ChangeDisplaySettingsA(LPDEVMODEA,DWORD);
+LONG        WINAPI ChangeDisplaySettingsW(LPDEVMODEW,DWORD);
+#define     ChangeDisplaySettings WINELIB_NAME_AW(ChangeDisplaySettings)
+LONG        WINAPI ChangeDisplaySettingsExA(LPCSTR,LPDEVMODEA,HWND,DWORD,LPARAM);
+LONG        WINAPI ChangeDisplaySettingsExW(LPCWSTR,LPDEVMODEW,HWND,DWORD,LPARAM);
+#define     ChangeDisplaySettingsEx WINELIB_NAME_AW(ChangeDisplaySettingsEx)
 BOOL      WINAPI ChangeMenuA(HMENU,UINT,LPCSTR,UINT,UINT);
 BOOL      WINAPI ChangeMenuW(HMENU,UINT,LPCWSTR,UINT,UINT);
 #define     ChangeMenu WINELIB_NAME_AW(ChangeMenu)
diff --git a/relay32/user32.spec b/relay32/user32.spec
index 305bfebb..9c597bb 100644
--- a/relay32/user32.spec
+++ b/relay32/user32.spec
@@ -606,7 +606,7 @@
 601 stub WNDPROC_CALLBACK
 602 stdcall DrawCaptionTempW(long long ptr long long wstr long) DrawCaptionTempW
 603 stub IsHungAppWindow
-604 stub ChangeDisplaySettingsExA
+604 stdcall ChangeDisplaySettingsExA(str ptr long long ptr) ChangeDisplaySettingsExA
 605 stub ChangeDisplaySettingsExW
 606 stdcall SetWindowText(long str) SetWindowTextA
 607 stdcall GetMonitorInfoA(long ptr) GetMonitorInfoA
diff --git a/windows/user.c b/windows/user.c
index 672783b..bda9b03 100644
--- a/windows/user.c
+++ b/windows/user.c
@@ -322,13 +322,50 @@
     return FALSE;
 }
 
+static void _dump_CDS_flags(DWORD flags) {
+#define X(x) if (flags & CDS_##x) MESSAGE(""#x ",");
+	X(UPDATEREGISTRY);X(TEST);X(FULLSCREEN);X(GLOBAL);
+	X(SET_PRIMARY);X(RESET);X(SETRECT);X(NORESET);
+#undef X
+}
 
 /***********************************************************************
  *           ChangeDisplaySettingA    (USER32.589)
  */
 LONG WINAPI ChangeDisplaySettingsA( LPDEVMODEA devmode, DWORD flags )
 {
-  FIXME_(system)(": stub\n");
+  FIXME_(system)("(%p,0x%08lx), stub\n",devmode,flags);
+  MESSAGE("\tflags=");_dump_CDS_flags(flags);MESSAGE("\n");
+  if (devmode==NULL)
+    FIXME_(system)("   devmode=NULL (return to default mode)\n");
+  else if ( (devmode->dmBitsPerPel != DESKTOP_GetScreenDepth()) 
+	    || (devmode->dmPelsHeight != DESKTOP_GetScreenHeight())
+	    || (devmode->dmPelsWidth != DESKTOP_GetScreenWidth()) )
+
+  {
+
+    if (devmode->dmFields & DM_BITSPERPEL)
+      FIXME_(system)("   bpp=%ld\n",devmode->dmBitsPerPel);
+    if (devmode->dmFields & DM_PELSWIDTH)
+      FIXME_(system)("   width=%ld\n",devmode->dmPelsWidth);
+    if (devmode->dmFields & DM_PELSHEIGHT)
+      FIXME_(system)("   height=%ld\n",devmode->dmPelsHeight);
+    FIXME_(system)(" (Putting X in this mode beforehand might help)\n"); 
+    /* we don't, but the program ... does not need to know */
+    return DISP_CHANGE_SUCCESSFUL; 
+  }
+  return DISP_CHANGE_SUCCESSFUL;
+}
+
+/***********************************************************************
+ *           ChangeDisplaySettingExA    (USER32.604)
+ */
+LONG WINAPI ChangeDisplaySettingsExA( 
+	LPCSTR devname, LPDEVMODEA devmode, HWND hwnd, DWORD flags,
+	LPARAM lparam
+) {
+  FIXME_(system)("(%s,%p,0x%04x,0x%08lx,0x%08lx), stub\n",devname,devmode,hwnd,flags,lparam);
+  MESSAGE("\tflags=");_dump_CDS_flags(flags);MESSAGE("\n");
   if (devmode==NULL)
     FIXME_(system)("   devmode=NULL (return to default mode)\n");
   else if ( (devmode->dmBitsPerPel != DESKTOP_GetScreenDepth()) 
