Pergunta

Como devo dizer SDL para maximizar a janela do aplicativo?

Estou criando a janela com estas bandeiras: SDL_OPENGL | SDL_HWSURFACE | SDL_DOUBLEBUF | SDL_RESIZABLE.

Foi útil?

Solução

Esta funcionalidade é controlada pelo gerenciador de janelas quando você usa a bandeira SDL_RESIZABLE. Para simular a maximizar uma janela com SDL você precisa primeiro determinar o tamanho da janela ocuparia quando maximizada. Então você chamaria SDL_SetVideoMode com este tamanho após a colocação da janela com o SDL_VIDEO_WINDOW_POS variável de ambiente .

Se você realmente precisa da janela para ser maximizada como se você tivesse clicado no botão de maximização, então você terá que acessar o gerenciador de janelas subjacente diretamente (ou seja, SDL não vai ajudá-lo).

Por exemplo, a função ShowWindow pode ser usado para maximizar uma janela usando a API Win32. Para obter um identificador para a janela criada pela SDL usar o href="http://www.libsdl.org/cgi/docwiki.cgi/SDL_GetWMInfo" rel="nofollow noreferrer"> SDL_GetWMInfo função . O resultando SDL_SysWMinfo struct contém um janela campo da digite HWND. Isso deve ser passado para a função ShowWindow junto com a bandeira SW_MAXIMIZE.

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

Outras dicas

Em 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 as respostas parecer fora de moda, hoje em dia apenas especificar SDL_WINDOW_MAXIMIZED como bandeira para SDL_CreateWindow.

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

Existem variáveis ??de ambiente adicionais que podem ser definidas para controlar a janela de exibição. Infelizmente a documentação do SDL são para baixo no momento, então não posso olhar para cima o que você precisa.

SDL_FULLSCREEN é a opção que você está procurando:

flags |= SDL_FULLSCREEN;
screen = SDL_SetVideoMode(..., flags);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top