diff --git a/debugger/Makefile.in b/debugger/Makefile.in
index 93e2f47..43fabb8 100644
--- a/debugger/Makefile.in
+++ b/debugger/Makefile.in
@@ -1,3 +1,4 @@
+EXTRADEFS = -DSTRICT
 TOPSRCDIR = @top_srcdir@
 TOPOBJDIR = ..
 SRCDIR    = @srcdir@
diff --git a/debugger/dbg.y b/debugger/dbg.y
index 12a2ded..4ac865f 100644
--- a/debugger/dbg.y
+++ b/debugger/dbg.y
@@ -225,7 +225,7 @@
     | tWALK tMODULE tEOL        { DEBUG_WalkModules(); }
     | tWALK tQUEUE tEOL         { DEBUG_WalkQueues(); }
     | tWALK tWND tEOL           { DEBUG_WalkWindows( 0, 0 ); }
-    | tWALK tWND tNUM tEOL      { DEBUG_WalkWindows( $3, 0 ); }
+    | tWALK tWND tNUM tEOL      { DEBUG_WalkWindows( (HWND)$3, 0 ); }
     | tWALK tPROCESS tEOL       { DEBUG_WalkProcess(); }
     | tWALK tTHREAD tEOL        { DEBUG_WalkThreads(); }
     | tWALK tMODREF expr_value tEOL   { DEBUG_WalkModref( $3 ); DEBUG_FreeExprMem(); }
diff --git a/debugger/info.c b/debugger/info.c
index f11f68e..677c601 100644
--- a/debugger/info.c
+++ b/debugger/info.c
@@ -249,7 +249,7 @@
    DEBUG_Printf(DBG_CHN_MESG,  "Class '%s':\n", name);
    DEBUG_Printf(DBG_CHN_MESG,  
 		"style=%08x  wndProc=%08lx\n"
-		"inst=%04x  icon=%04x  cursor=%04x  bkgnd=%04x\n"
+		"inst=%p  icon=%p  cursor=%p  bkgnd=%p\n"
 		"clsExtra=%d  winExtra=%d\n",
 		wca.style, (DWORD)wca.lpfnWndProc, wca.hInstance,
 		wca.hIcon, wca.hCursor, wca.hbrBackground,
@@ -265,7 +265,7 @@
 {
    WNDCLASSEXA	wca;
 
-   if (!GetClassInfoEx(GetWindowLong(hWnd, GWL_HINSTANCE), name, &wca)) {
+   if (!GetClassInfoEx((HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE), name, &wca)) {
       DEBUG_Printf(DBG_CHN_MESG, "Cannot find class '%s'\n", name);
       return;
    }
@@ -273,7 +273,7 @@
    DEBUG_Printf(DBG_CHN_MESG,  "Class '%s':\n", name);
    DEBUG_Printf(DBG_CHN_MESG,  
 		"style=%08x  wndProc=%08lx\n"
-		"inst=%04x  icon=%04x  cursor=%04x  bkgnd=%04x\n"
+		"inst=%p  icon=%p  cursor=%p  bkgnd=%p\n"
 		"clsExtra=%d  winExtra=%d\n",
 		wca.style, (DWORD)wca.lpfnWndProc, wca.hInstance,
 		wca.hIcon, wca.hCursor, wca.hbrBackground,
@@ -371,16 +371,16 @@
 
    /* FIXME missing fields: hmemTaskQ, hrgnUpdate, dce, flags, pProp, scroll */
    DEBUG_Printf(DBG_CHN_MESG,
-		"next=0x%04x  child=0x%04x  parent=0x%04x  owner=0x%04x  class='%s'\n"
-		"inst=%08lx  active=%04x  idmenu=%08lx\n"
+		"next=%p  child=%p  parent=%p  owner=%p  class='%s'\n"
+		"inst=%p  active=%p  idmenu=%08lx\n"
 		"style=%08lx  exstyle=%08lx  wndproc=%08lx  text='%s'\n"
-		"client=%d,%d-%d,%d  window=%d,%d-%d,%d sysmenu=%04x\n",
+		"client=%d,%d-%d,%d  window=%d,%d-%d,%d sysmenu=%p\n",
 		GetWindow(hWnd, GW_HWNDNEXT), 
 		GetWindow(hWnd, GW_CHILD),
 		GetParent(hWnd), 
 		GetWindow(hWnd, GW_OWNER),
 		clsName,
-		GetWindowLong(hWnd, GWL_HINSTANCE), 
+		(HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE), 
 		GetLastActivePopup(hWnd),
 		GetWindowLong(hWnd, GWL_ID),
 		GetWindowLong(hWnd, GWL_STYLE),
@@ -425,7 +425,7 @@
 	  strcpy(wndName, "-- Empty --");
        
        /* FIXME: missing hmemTaskQ */
-       DEBUG_Printf(DBG_CHN_MESG, "%*s%04x%*s", indent, "", hWnd, 13-indent,"");
+       DEBUG_Printf(DBG_CHN_MESG, "%*s%04x%*s", indent, "", (UINT)hWnd, 13-indent,"");
        DEBUG_Printf(DBG_CHN_MESG, "%-17.17s %08lx %08lx %.14s\n",
 		    clsName, GetWindowLong(hWnd, GWL_STYLE),
 		    GetWindowLong(hWnd, GWL_WNDPROC), wndName);
diff --git a/debugger/module.c b/debugger/module.c
index 20176dc..f16b95a 100644
--- a/debugger/module.c
+++ b/debugger/module.c
@@ -584,13 +584,13 @@
 {
     DBG_MODULE*	wmod;
 
-    if (!(wmod = DEBUG_FindModuleByHandle(mod, DMT_UNKNOWN)) &&
+    if (!(wmod = DEBUG_FindModuleByHandle((HANDLE)mod, DMT_UNKNOWN)) &&
 	!(wmod = DEBUG_FindModuleByAddr((void*)mod, DMT_UNKNOWN))) {
 	DEBUG_Printf(DBG_CHN_MESG, "'0x%08lx' is not a valid module handle or address\n", mod);
 	return;
     }
 
-    DEBUG_Printf(DBG_CHN_MESG, "Module '%s' (handle=0x%08x) 0x%08lx-0x%08lx (%s, debug info %s)\n",
+    DEBUG_Printf(DBG_CHN_MESG, "Module '%s' (handle=%p) 0x%08lx-0x%08lx (%s, debug info %s)\n",
 		 wmod->module_name, wmod->handle, (DWORD)wmod->load_addr,
 		 (DWORD)wmod->load_addr + wmod->size,
 		 DEBUG_GetModuleType(wmod->type), DEBUG_GetDbgInfo(wmod->dil));
diff --git a/debugger/msc.c b/debugger/msc.c
index 41cb1d0..c661ce0 100644
--- a/debugger/msc.c
+++ b/debugger/msc.c
@@ -81,7 +81,6 @@
 static void*	DEBUG_MapDebugInfoFile(const char* name, DWORD offset, DWORD size,
 				       HANDLE* hFile, HANDLE* hMap)
 {
-    OFSTRUCT	ofs;
     DWORD	g_offset;	/* offset aligned on map granuality */
     DWORD	g_size;		/* size to map, with offset aligned */
     char*	ret;
@@ -92,7 +91,7 @@
        char 	filename[MAX_PATHNAME_LEN];
 
        DEBUG_LocateDebugInfoFile(name, filename);
-       if ((*hFile = OpenFile(filename, &ofs, OF_READ)) == HFILE_ERROR)
+       if ((*hFile = CreateFile(filename, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL)) == INVALID_HANDLE_VALUE)
 	  return NULL;
     }
 
diff --git a/debugger/winedbg.c b/debugger/winedbg.c
index 64aaa70..d4e05b3 100644
--- a/debugger/winedbg.c
+++ b/debugger/winedbg.c
@@ -849,7 +849,7 @@
 	HANDLE	hEvent;
 	DWORD	pid;
 
-	if ((pid = atoi(argv[1])) != 0 && (hEvent = atoi(argv[2])) != 0) {
+	if ((pid = atoi(argv[1])) != 0 && (hEvent = (HANDLE)atoi(argv[2])) != 0) {
 	    BOOL	ret = DEBUG_Attach(pid, TRUE);
 
 	    SetEvent(hEvent);
