문제

애플리케이션 창을 최대화하려면 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);
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top