Pregunta

¿Cómo debo decirle a SDL que maximice la ventana de la aplicación?

Estoy creando la ventana con estas banderas: SDL_OPENGL | SDL_HWSURFACE | SDL_DOUBLEBUF | SDL_RESIZABLE.

¿Fue útil?

Solución

Esta funcionalidad es controlada por el administrador de ventanas cuando usa el indicador SDL_RESIZABLE. Para simular la maximización de una ventana con SDL, primero debe determinar el tamaño que ocuparía la ventana cuando se maximiza. Luego llamaría a SDL_SetVideoMode con este tamaño después de colocar la ventana con el variable de entorno SDL_VIDEO_WINDOW_POS .

Si realmente necesita que la ventana se maximice como si hubiera hecho clic en el botón de maximizar, entonces tendrá que acceder directamente al administrador de ventanas subyacente (es decir, SDL no lo ayudará).

Por ejemplo, la función ShowWindow se puede usar para maximizar una ventana usando la API Win32. Para obtener un identificador de la ventana creada por SDL, use la función SDL_GetWMInfo . El SDL_SysWMinfo struct contiene un campo ventana de tipo HWND. Esto debe pasarse a la función ShowWindow junto con el indicador SW_MAXIMIZE.

SDL_SysWMinfo info;
SDL_VERSION(&info.version);
SDL_GetWMInfo(&info);
ShowWindow(info.window, SW_MAXIMIZE);

Otros consejos

En SDL2.0

sdl_window = SDL_CreateWindow("title", 10, 30, window_width, window_height, SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE);
SDL_MaximizeWindow(sdl_window);
SDL_GetWindowSize(sdl_window, &window_width, &window_height);
sdl_gl_context = SDL_GL_CreateContext(sdl_window);
SDL_GL_MakeCurrent(sdl_window, sdl_gl_context);

Todas las respuestas parecen anticuadas, hoy en día solo especifique SDL_WINDOW_MAXIMIZED como bandera para SDL_CreateWindow .

window = SDL_CreateWindow(
    "Foobar",
    SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 1280, 720,
    SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE | SDL_WINDOW_MAXIMIZED
);

Hay variables de entorno adicionales que se pueden configurar para controlar la ventana de visualización. Lamentablemente, los documentos SDL están caídos en este momento, por lo que no puedo buscar lo que necesita.

SDL_FULLSCREEN es la opción que estás buscando:

flags |= SDL_FULLSCREEN;
screen = SDL_SetVideoMode(..., flags);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top