Cleaned up some more USER dependencies.

diff --git a/windows/multimon.c b/windows/multimon.c
index 0d0fef8..52c574d 100644
--- a/windows/multimon.c
+++ b/windows/multimon.c
@@ -4,7 +4,6 @@
  * Copyright 1998 Turchanov Sergey
  */
 
-#include "monitor.h"
 #include "windef.h"
 #include "wingdi.h"
 #include "winbase.h"
@@ -14,8 +13,6 @@
 
 #define xPRIMARY_MONITOR ((HMONITOR)0x12340042)
 
-MONITOR MONITOR_PrimaryMonitor;
-
 /***********************************************************************
  *		MonitorFromPoint
  */
@@ -80,7 +77,9 @@
         (lpMonitorInfo->cbSize >= sizeof(MONITORINFO)) &&
         SystemParametersInfoA(SPI_GETWORKAREA, 0, &rcWork, 0))
     {
-        lpMonitorInfo->rcMonitor = MONITOR_PrimaryMonitor.rect;
+        SetRect( &lpMonitorInfo->rcMonitor, 0, 0,
+                 GetSystemMetrics(SM_CXSCREEN),
+                 GetSystemMetrics(SM_CYSCREEN) );
         lpMonitorInfo->rcWork = rcWork;
         lpMonitorInfo->dwFlags = MONITORINFOF_PRIMARY;
 	
@@ -105,7 +104,9 @@
         (lpMonitorInfo->cbSize >= sizeof(MONITORINFO)) &&
         SystemParametersInfoW(SPI_GETWORKAREA, 0, &rcWork, 0))
     {
-        lpMonitorInfo->rcMonitor = MONITOR_PrimaryMonitor.rect;
+        SetRect( &lpMonitorInfo->rcMonitor, 0, 0,
+                 GetSystemMetrics(SM_CXSCREEN),
+                 GetSystemMetrics(SM_CYSCREEN) );
         lpMonitorInfo->rcWork = rcWork;
         lpMonitorInfo->dwFlags = MONITORINFOF_PRIMARY;
 
@@ -127,7 +128,9 @@
         MONITORENUMPROC lpfnEnumProc,
         LPARAM          dwData)
 {
-    RECT rcLimit = MONITOR_PrimaryMonitor.rect;
+    RECT rcLimit;
+    SetRect( &rcLimit, 0, 0, GetSystemMetrics(SM_CXSCREEN),
+             GetSystemMetrics(SM_CYSCREEN) );
 
     if (!lpfnEnumProc)
         return FALSE;
diff --git a/windows/sysmetrics.c b/windows/sysmetrics.c
index 8180718..c397fc3 100644
--- a/windows/sysmetrics.c
+++ b/windows/sysmetrics.c
@@ -6,18 +6,18 @@
  */
 
 #include <stdio.h>
+#include <assert.h>
 
 #include "windef.h"
 #include "wingdi.h"
 #include "wine/winuser16.h"
 #include "winbase.h"
 #include "winuser.h"
-#include "monitor.h"
 #include "options.h"
 #include "sysmetrics.h"
 #include "tweak.h"
 
-static short sysMetrics[SM_CMETRICS+1];
+static int sysMetrics[SM_WINE_CMETRICS+1];
 
 /***********************************************************************
  *           SYSMETRICS_Init
@@ -38,10 +38,14 @@
  */
 void SYSMETRICS_Init(void)
 {
+    HDC hdc = CreateDCA( "DISPLAY", NULL, NULL, NULL );
+    assert(hdc);
+
     sysMetrics[SM_CXCURSOR] = 32;
     sysMetrics[SM_CYCURSOR] = 32;
-    sysMetrics[SM_CXSCREEN] = MONITOR_GetWidth(&MONITOR_PrimaryMonitor);
-    sysMetrics[SM_CYSCREEN] =  MONITOR_GetHeight(&MONITOR_PrimaryMonitor);
+    sysMetrics[SM_CXSCREEN] = GetDeviceCaps( hdc, HORZRES );
+    sysMetrics[SM_CYSCREEN] = GetDeviceCaps( hdc, VERTRES );
+    sysMetrics[SM_WINE_BPP] = GetDeviceCaps( hdc, BITSPIXEL );
     if (TWEAK_WineLook > WIN31_LOOK)
 	sysMetrics[SM_CXVSCROLL] =
 	    PROFILE_GetWineIniInt("Tweak.Layout", "ScrollBarWidth", 16);
@@ -168,6 +172,8 @@
     sysMetrics[SM_CMONITORS] = 1;
     sysMetrics[SM_SAMEDISPLAYFORMAT] = 1;
     sysMetrics[SM_CMETRICS] = SM_CMETRICS;
+
+    DeleteDC( hdc );
 }
 
 
@@ -185,6 +191,6 @@
  */
 INT WINAPI GetSystemMetrics( INT index )
 {
-    if ((index < 0) || (index > SM_CMETRICS)) return 0;
+    if ((index < 0) || (index > SM_WINE_CMETRICS)) return 0;
     else return sysMetrics[index];    
 }
diff --git a/windows/ttydrv/init.c b/windows/ttydrv/init.c
index 747a3e6..dedd860 100644
--- a/windows/ttydrv/init.c
+++ b/windows/ttydrv/init.c
@@ -5,7 +5,6 @@
  */
 
 #include "clipboard.h"
-#include "monitor.h"
 #include "user.h"
 #include "win.h"
 #include "ttydrv.h"
diff --git a/windows/user.c b/windows/user.c
index 4b363ca..4cfa2e1 100644
--- a/windows/user.c
+++ b/windows/user.c
@@ -24,19 +24,19 @@
 #include "toolhelp.h"
 #include "message.h"
 #include "module.h"
-#include "monitor.h"
 #include "miscemu.h"
 #include "shell.h"
+#include "sysmetrics.h"
 #include "callback.h"
 #include "local.h"
 #include "process.h"
 #include "debugtools.h"
 
-DECLARE_DEBUG_CHANNEL(hook)
-DECLARE_DEBUG_CHANNEL(local)
-DECLARE_DEBUG_CHANNEL(system)
-DECLARE_DEBUG_CHANNEL(win)
-DECLARE_DEBUG_CHANNEL(win32)
+DECLARE_DEBUG_CHANNEL(hook);
+DECLARE_DEBUG_CHANNEL(local);
+DECLARE_DEBUG_CHANNEL(system);
+DECLARE_DEBUG_CHANNEL(win);
+DECLARE_DEBUG_CHANNEL(win32);
 
 /***********************************************************************
  *           GetFreeSystemResources   (USER.284)
@@ -333,9 +333,9 @@
   MESSAGE("\tflags=");_dump_CDS_flags(flags);MESSAGE("\n");
   if (devmode==NULL)
     FIXME_(system)("   devmode=NULL (return to default mode)\n");
-  else if ( (devmode->dmBitsPerPel != MONITOR_GetDepth(&MONITOR_PrimaryMonitor)) 
-	    || (devmode->dmPelsHeight != MONITOR_GetHeight(&MONITOR_PrimaryMonitor))
-	    || (devmode->dmPelsWidth != MONITOR_GetWidth(&MONITOR_PrimaryMonitor)) )
+  else if ( (devmode->dmBitsPerPel != GetSystemMetrics(SM_WINE_BPP)) 
+	    || (devmode->dmPelsHeight != GetSystemMetrics(SM_CYSCREEN))
+	    || (devmode->dmPelsWidth != GetSystemMetrics(SM_CXSCREEN)) )
 
   {
 
@@ -363,9 +363,9 @@
   MESSAGE("\tflags=");_dump_CDS_flags(flags);MESSAGE("\n");
   if (devmode==NULL)
     FIXME_(system)("   devmode=NULL (return to default mode)\n");
-  else if ( (devmode->dmBitsPerPel != MONITOR_GetDepth(&MONITOR_PrimaryMonitor)) 
-	    || (devmode->dmPelsHeight != MONITOR_GetHeight(&MONITOR_PrimaryMonitor))
-	    || (devmode->dmPelsWidth != MONITOR_GetWidth(&MONITOR_PrimaryMonitor)) )
+  else if ( (devmode->dmBitsPerPel != GetSystemMetrics(SM_WINE_BPP))
+	    || (devmode->dmPelsHeight != GetSystemMetrics(SM_CYSCREEN))
+	    || (devmode->dmPelsWidth != GetSystemMetrics(SM_CXSCREEN)) )
 
   {
 
@@ -404,9 +404,9 @@
 
 	TRACE_(system)("(%s,%ld,%p)\n",name,n,devmode);
 	if (n==0) {
-		devmode->dmBitsPerPel = MONITOR_GetDepth(&MONITOR_PrimaryMonitor);
-		devmode->dmPelsHeight = MONITOR_GetHeight(&MONITOR_PrimaryMonitor);
-		devmode->dmPelsWidth  = MONITOR_GetWidth(&MONITOR_PrimaryMonitor);
+		devmode->dmBitsPerPel = GetSystemMetrics(SM_WINE_BPP);
+		devmode->dmPelsHeight = GetSystemMetrics(SM_CYSCREEN);
+		devmode->dmPelsWidth  = GetSystemMetrics(SM_CXSCREEN);
 		return TRUE;
 	}
 	if ((n-1)<NRMODES*NRDEPTHS) {
diff --git a/windows/win.c b/windows/win.c
index e973f7d..99acd4b 100644
--- a/windows/win.c
+++ b/windows/win.c
@@ -20,7 +20,6 @@
 #include "hook.h"
 #include "menu.h"
 #include "message.h"
-#include "monitor.h"
 #include "nonclient.h"
 #include "queue.h"
 #include "winpos.h"
diff --git a/windows/x11drv/init.c b/windows/x11drv/init.c
index 0b256c5..525e041 100644
--- a/windows/x11drv/init.c
+++ b/windows/x11drv/init.c
@@ -5,7 +5,6 @@
  */
 
 #include "clipboard.h"
-#include "monitor.h"
 #include "user.h"
 #include "win.h"
 #include "x11drv.h"
diff --git a/windows/x11drv/mouse.c b/windows/x11drv/mouse.c
index eab97ec..96c6f80 100644
--- a/windows/x11drv/mouse.c
+++ b/windows/x11drv/mouse.c
@@ -11,7 +11,6 @@
 #include "callback.h"
 #include "debugtools.h"
 #include "mouse.h"
-#include "monitor.h"
 #include "win.h"
 #include "windef.h"
 #include "x11drv.h"
@@ -274,8 +273,8 @@
 void X11DRV_MOUSE_SendEvent( DWORD mouseStatus, DWORD posX, DWORD posY, 
                              DWORD keyState, DWORD time, HWND hWnd )
 {
-    int width  = MONITOR_GetWidth (&MONITOR_PrimaryMonitor);
-    int height = MONITOR_GetHeight(&MONITOR_PrimaryMonitor);
+    int width  = GetSystemMetrics( SM_CXSCREEN );
+    int height = GetSystemMetrics( SM_CYSCREEN );
     int iWndsLocks;
     WINE_MOUSEEVENT wme;