int DX5_CreateWindow(_THIS) { int i; /* Clear out DirectInput variables in case we fail */ for ( i=0; i<MAX_INPUTS; ++i ) { SDL_DIdev[i] = NULL; SDL_DIevt[i] = NULL; SDL_DIfun[i] = NULL; } #ifndef CS_BYTEALIGNCLIENT #define CS_BYTEALIGNCLIENT 0 #endif 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. */ 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), CW_USEDEFAULT, CW_USEDEFAULT, 0, 0, NULL, NULL, SDL_Instance, NULL); if ( SDL_Window == NULL ) { SDL_SetError("Couldn't create window"); return(-1); } ShowWindow(SDL_Window, SW_HIDE); } /* Initialize DirectInput */ if ( DX5_DInputInit(this) < 0 ) { return(-1); } /* Ready to roll */ return(0); }
int DX5_CreateWindow(_THIS) { char *windowid = SDL_getenv("SDL_WINDOWID"); int i; for ( i=0; i<MAX_INPUTS; ++i ) { SDL_DIdev[i] = NULL; SDL_DIevt[i] = NULL; SDL_DIfun[i] = NULL; } SDL_RegisterApp(NULL, 0, 0); SDL_windowid = (windowid != NULL); if ( SDL_windowid ) { SDL_Window = (HWND)((size_t)SDL_strtoull(windowid, NULL, 0)); if ( SDL_Window == NULL ) { SDL_SetError("Couldn't get user specified window"); return(-1); } userWindowProc = (WNDPROCTYPE)GetWindowLongPtr(SDL_Window, GWLP_WNDPROC); SetWindowLongPtr(SDL_Window, GWLP_WNDPROC, (LONG_PTR)WinMessage); } else { SDL_Window = CreateWindow(SDL_Appname, SDL_Appname, (WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX), CW_USEDEFAULT, CW_USEDEFAULT, 0, 0, NULL, NULL, SDL_Instance, NULL); if ( SDL_Window == NULL ) { SDL_SetError("Couldn't create window"); return(-1); } ShowWindow(SDL_Window, SW_HIDE); } if ( DX5_DInputInit(this) < 0 ) { return(-1); } WIN_FlushMessageQueue(); return(0); }