Вопрос

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

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

Это было полезно?

Решение

Эта функция контролируется оконным менеджером при использовании флага 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);

Другие советы

В 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