static void GLimp_CreateWindow( void ) { HWND parentHWND = glw_state.parenthWnd; #ifdef WITH_UTF8 WNDCLASSW wc; #else WNDCLASS wc; #endif Q_snprintfz( glw_state.windowClassName, sizeof( glw_state.windowClassName ), "%sWndClass", glw_state.applicationName ); #ifdef WITH_UTF8 MultiByteToWideChar( CP_UTF8, 0, glw_state.windowClassName, -1, glw_state.windowClassNameW, sizeof( glw_state.windowClassNameW ) ); glw_state.windowClassNameW[sizeof( glw_state.windowClassNameW )/sizeof( glw_state.windowClassNameW[0] ) - 1] = 0; #endif /* Register the frame class */ wc.style = 0; wc.lpfnWndProc = (WNDPROC)glw_state.wndproc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = glw_state.hInstance; wc.hIcon = LoadIcon( glw_state.hInstance, MAKEINTRESOURCE( glw_state.applicationIconResourceID ) ); wc.hCursor = LoadCursor( NULL, IDC_ARROW ); wc.hbrBackground = (HBRUSH)GetStockObject( BLACK_BRUSH ); wc.lpszMenuName = 0; #ifdef WITH_UTF8 wc.lpszClassName = (LPCWSTR)glw_state.windowClassNameW; if( !RegisterClassW( &wc ) ) #else wc.lpszClassName = (LPCSTR)glw_state.windowClassName; if( !RegisterClass( &wc ) ) #endif Sys_Error( "Couldn't register window class" ); glw_state.hWnd = #ifdef WITH_UTF8 CreateWindowExW( #else CreateWindowEx( #endif 0, #ifdef WITH_UTF8 glw_state.windowClassNameW, glw_state.applicationNameW, #else glw_state.windowClassName, glw_state.applicationName, #endif 0, 0, 0, 0, 0, parentHWND, NULL, glw_state.hInstance, NULL ); if( !glw_state.hWnd ) Sys_Error( "Couldn't create window" ); GLimp_SetWindowSize( glConfig.fullScreen, glConfig.borderless ); }
/* ** GLimp_SetFullscreenMode */ rserr_t GLimp_SetFullscreenMode( int displayFrequency, bool fullscreen ) { glConfig.fullScreen = false; // do a CDS if needed if( fullscreen ) { int a; DEVMODE dm; ri.Com_Printf( "...attempting fullscreen\n" ); memset( &dm, 0, sizeof( dm ) ); dm.dmSize = sizeof( dm ); dm.dmPelsWidth = glConfig.width; dm.dmPelsHeight = glConfig.height; dm.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT; if( displayFrequency > 0 ) { dm.dmFields |= DM_DISPLAYFREQUENCY; dm.dmDisplayFrequency = displayFrequency; ri.Com_Printf( "...using display frequency %i\n", dm.dmDisplayFrequency ); } ri.Com_Printf( "...calling CDS: " ); a = ChangeDisplaySettings( &dm, CDS_FULLSCREEN ); if( a == DISP_CHANGE_SUCCESSFUL ) { ri.Com_Printf( "ok\n" ); glConfig.fullScreen = true; GLimp_SetWindowSize( true ); return rserr_ok; } ri.Com_Printf( "failed: %x\n", a ); return rserr_invalid_fullscreen; } ChangeDisplaySettings( 0, 0 ); GLimp_SetWindowSize( false ); return rserr_ok; }