diff --git a/src/video/windib/SDL_dibevents.c b/src/video/windib/SDL_dibevents.c
index f03ed27467289450e8ac9b969230fa248386b646..71b1a442a239bd66edb00ad65735db17559c1a7a 100644
--- a/src/video/windib/SDL_dibevents.c
+++ b/src/video/windib/SDL_dibevents.c
@@ -368,7 +368,6 @@ int DIB_CreateWindow(_THIS)
 	SDL_RegisterApp("SDL_app", CS_BYTEALIGNCLIENT, 0);
 	if ( SDL_windowid ) {
 		SDL_Window = (HWND)strtol(SDL_windowid, NULL, 0);
-
 		if ( SDL_Window == NULL ) {
 			SDL_SetError("Couldn't get user specified window");
 			return(-1);
diff --git a/src/video/windx5/SDL_dx5events.c b/src/video/windx5/SDL_dx5events.c
index bf96b9437c59e2205c178153d587b2c62b581d5d..d906fe49d3de676918bed5600bee1a08f3d54e38 100644
--- a/src/video/windx5/SDL_dx5events.c
+++ b/src/video/windx5/SDL_dx5events.c
@@ -849,14 +849,16 @@ int DX5_CreateWindow(_THIS)
 	SDL_RegisterApp("SDL_app", CS_BYTEALIGNCLIENT, 0);
 	if ( SDL_windowid ) {
 		SDL_Window = (HWND)strtol(SDL_windowid, NULL, 0);
+		if ( SDL_Window == NULL ) {
+			SDL_SetError("Couldn't get user specified window");
+			return(-1);
+		}
 
 		/* DJM: we want all event's for the user specified
-		   window to be handled by SDL.
+			window to be handled by SDL.
 		 */
-		if (SDL_Window) {
-			userWindowProc = (WNDPROC)GetWindowLong(SDL_Window, GWL_WNDPROC);
-			SetWindowLong(SDL_Window, GWL_WNDPROC, (LONG)WinMessage);
-		}
+		userWindowProc = (WNDPROC)GetWindowLong(SDL_Window, GWL_WNDPROC);
+		SetWindowLong(SDL_Window, GWL_WNDPROC, (LONG)WinMessage);
 	} else {
 		SDL_Window = CreateWindow(SDL_Appname, SDL_Appname,
                         (WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX),
@@ -883,5 +885,9 @@ void DX5_DestroyWindow(_THIS)
 	DX5_DInputQuit(this);
 
 	/* Destroy our window */
-	DestroyWindow(SDL_Window);
+	if ( SDL_windowid ) {
+		SetWindowLong(SDL_Window, GWL_WNDPROC, (LONG)userWindowProc);
+	} else {
+		DestroyWindow(SDL_Window);
+	}
 }