¿Cómo debo decir SDL para maximizar la ventana de aplicación?SDL
estoy creando la ventana con estas banderas: SDL_OPENGL | SDL_HWSURFACE | SDL_DOUBLEBUF | SDL_RESIZABLE.
¿Cómo debo decir SDL para maximizar la ventana de aplicación?SDL
estoy creando la ventana con estas banderas: SDL_OPENGL | SDL_HWSURFACE | SDL_DOUBLEBUF | SDL_RESIZABLE.
Esta funcionalidad es controlada por el gestor de ventanas cuando se utiliza la bandera SDL_RESIZABLE. Para simular la maximización de una ventana con SDL, primero necesitaría determinar el tamaño que ocuparía la ventana cuando se maximiza. A continuación, debe llamar al SDL_SetVideoMode con este tamaño después de colocar la ventana con el SDL_VIDEO_WINDOW_POS environment variable.
Si realmente necesita maximizar la ventana como si hubiera hecho clic en el botón Maximizar, tendrá que acceder directamente al administrador de ventanas subyacente (es decir, SDL no lo ayudará).
Por ejemplo, la función ShowWindow se puede utilizar para maximizar una ventana mediante la API de Win32. Para obtener un control de la ventana creada por SDL, use la función SDL_GetWMInfo. La estructura SDL_SysWMinfo resultante contiene un campo ventana de tipo HWND. Esto se debe pasar 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);
Esto es simplemente una simulación, no es la realidad. La ventana real maximizada no tiene bordes izquierdo y derecho y el ícono "minimizar" en lugar de "maximizar" en el encabezado. –
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.
Souds promisorios, pero no pude encontrar algo así en la documentación. –
He echado un vistazo al env. variables una vez más, y no hay ninguna que afecte el estado de la ventana, solo la posición. –
SDL_FULLSCREEN es la opción que está buscando:
flags |= SDL_FULLSCREEN;
screen = SDL_SetVideoMode(..., flags);
Estoy buscando una forma de maximizar la ventana, no hacerla a pantalla completa. –
Lo siento, mi mal, ¡eso me enseñará a trabajar en estos temas cuando estoy medio dormido! Trataré de encontrar una solución que * maximice * la pantalla esta noche. – MattyT
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 obsoletas, hoy en día sólo tiene que especificar SDL_WINDOW_MAXIMIZED
como bandera para SDL_CreateWindow
.
window = SDL_CreateWindow(
"Wrong/Fucked&Overrated",
SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 1280, 720,
SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE | SDL_WINDOW_MAXIMIZED
);
¿Es necesario que esta solución sea portátil o bastaría con una solución Win32 o X11? –
Ganar 32 shuld, pero el soporte de Linux sería bienvenido. –
OK, agregué un fragmento de código a mi respuesta que muestra cómo maximizar su ventana de SDL con la API de Win32. No ha sido probado ... –