문제
애플리케이션 창을 최대화하려면 SDL에 어떻게 지시해야합니까?
이 깃발로 창을 만들고 있습니다 : sdl_opengl | SDL_HWSURFACE | sdl_doublebuf | sdl_resizable.
해결책
이 기능은 sdl_resizable 플래그를 사용할 때 Window Manager에 의해 제어됩니다. SDL로 창을 최대화하려면 먼저 최대화 될 때 창이 차지하는 크기를 결정해야합니다. 그러면 당신은 전화 할 것입니다 SDL_SETVIDEOMODE 이 크기로 창을 배치 한 후 sdl_video_window_pos 환경 변수.
최대화 버튼을 클릭 한 것처럼 창을 최대화 해야하는 경우 기본 창 관리자에 직접 액세스해야합니다 (즉, SDL이 도움이되지 않습니다).
예를 들어, 쇼 와디 함수는 Win32 API를 사용하여 창을 최대화하는 데 사용될 수 있습니다. SDL에 의해 생성 된 창에 대한 손잡이를 얻으려면 sdl_getwminfo 기능. 결과 sdl_syswminfo 구조물에는 a가 포함되어 있습니다 창문 유형의 필드 hwnd. SW_MAXIMIZE 플래그와 함께 Showwindow 함수로 전달되어야합니다.
SDL_SysWMinfo info;
SDL_VERSION(&info.version);
SDL_GetWMInfo(&info);
ShowWindow(info.window, SW_MAXIMIZE);
다른 팁
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);
모든 답변은 구식으로 보이며 요즘에는 단지 지정됩니다 SDL_WINDOW_MAXIMIZED
깃발로 SDL_CreateWindow
.
window = SDL_CreateWindow(
"Foobar",
SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 1280, 720,
SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE | SDL_WINDOW_MAXIMIZED
);
디스플레이 창을 제어하도록 설정할 수있는 추가 환경 변수가 있습니다. 불행히도 SDL 문서는 현재 다운되었으므로 필요한 것을 찾을 수 없습니다.
sdl_fullscreen은 원하는 옵션입니다.
flags |= SDL_FULLSCREEN;
screen = SDL_SetVideoMode(..., flags);