Frage

Wie soll ich sagen SDL das Anwendungsfenster zu maximieren?

Ich schaffe das Fenster mit diesen Flags: SDL_OPENGL | SDL_HWSURFACE | SDL_DOUBLEBUF | SDL_RESIZABLE.

War es hilfreich?

Lösung

Diese Funktionalität wird durch den Fenstermanager gesteuert werden, wenn Sie den SDL_RESIZABLE Flag verwenden. Um die Maximierung eines Fensters mit SDL simulieren würden Sie müssen zuerst die Größe bestimmen das Fenster einnehmen würde, wenn es maximiert. Dann würde rufen Sie SDL_SetVideoMode mit dieser Größe nach dem Fenster mit der SDL_VIDEO_WINDOW_POS Umgebungsvariable .

Wenn Sie wirklich das Fenster müssen maximiert werden, als ob Sie auf der Schaltfläche zum Maximieren geklickt, dann werden Sie die darunter liegenden Fenster-Manager direkt zugreifen müssen (das heißt SDL wird dir nicht helfen).

Zum Beispiel kann die Funktion Showwindow kann verwendet werden, um ein Fenster mit dem Win32-API zu maximieren. Um verwendet ein Handle für das Fenster erstellt von SDL die SDL_GetWMInfo Funktion. Das resultierende SDL_SysWMinfo struct enthält ein Fenster Feld Typ HWND. Dies muss zusammen mit dem SW_MAXIMIZE Flag an die Showwindow-Funktion übergeben werden.

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

Andere Tipps

In 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);

Alle Antworten scheinen veraltet, heute nur SDL_WINDOW_MAXIMIZED als Flagge für SDL_CreateWindow angeben.

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

Es gibt zusätzliche Umgebungsvariablen, die eingestellt werden können, das Anzeigefenster zu steuern. Leider ist die sdl docs nach unten im Moment, also kann ich nicht sehen, was Sie brauchen.

SDL_FULLSCREEN ist die Option, die Sie suchen:

flags |= SDL_FULLSCREEN;
screen = SDL_SetVideoMode(..., flags);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top