Развернуть окно SDL - PullRequest
       10

Развернуть окно SDL

8 голосов
/ 23 ноября 2008

Как мне сказать SDL, чтобы развернуть окно приложения?

Я создаю окно с этими флагами: SDL_OPENGL | SDL_HWSURFACE | SDL_DOUBLEBUF | SDL_RESIZABLE.

Ответы [ 5 ]

6 голосов
/ 15 мая 2014

В 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);
5 голосов
/ 24 ноября 2008

Эта функция контролируется оконным менеджером при использовании флага SDL_RESIZABLE. Чтобы смоделировать максимизацию окна с помощью SDL, вам необходимо сначала определить размер, который будет занимать окно при максимизации. Затем вы должны вызвать SDL_SetVideoMode с этим размером после помещения окна с переменной среды SDL_VIDEO_WINDOW_POS .

Если вы действительно хотите, чтобы окно было развернуто, как если бы вы щелкнули по кнопке максимизации, то вам придется получить прямой доступ к соответствующему оконному менеджеру (т.е. SDL вам не поможет).

Например, функция ShowWindow может использоваться для максимизации окна с помощью Win32 API. Чтобы получить дескриптор окна, созданного SDL, используйте функцию SDL_GetWMInfo . Результирующая структура SDL_SysWMinfo содержит поле window типа HWND. Это должно быть передано в функцию ShowWindow вместе с флагом SW_MAXIMIZE.

SDL_SysWMinfo info;
SDL_VERSION(&info.version);
SDL_GetWMInfo(&info);
ShowWindow(info.window, SW_MAXIMIZE);
3 голосов
/ 04 сентября 2017

Все ответы кажутся устаревшими, сейчас просто укажите 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
);
0 голосов
/ 23 ноября 2008

SDL_FULLSCREEN - это опция, которую вы ищете:

flags |= SDL_FULLSCREEN;
screen = SDL_SetVideoMode(..., flags);
0 голосов
/ 23 ноября 2008

Существуют дополнительные переменные среды, которые можно установить для управления окном дисплея. К сожалению, документы sdl в настоящее время недоступны, поэтому я не могу найти то, что вам нужно.

...