Domanda

Come devo dire a SDL di ingrandire la finestra dell'applicazione?

Sto creando la finestra con questi flag: SDL_OPENGL | SDL_HWSURFACE | SDL_DOUBLEBUF | SDL_RESIZABLE.

È stato utile?

Soluzione

Questa funzionalità è controllata dal gestore di finestre quando si utilizza il flag SDL_RESIZABLE. Per simulare la massimizzazione di una finestra con SDL è necessario prima determinare la dimensione che la finestra occuperebbe quando ingrandita. Quindi chiameresti SDL_SetVideoMode con questa dimensione dopo aver posizionato la finestra con SDL_VIDEO_WINDOW_POS variabile d'ambiente .

Se hai davvero bisogno di ingrandire la finestra come se avessi fatto clic sul pulsante Ingrandisci, dovrai accedere direttamente al gestore della finestra sottostante (ovvero SDL non ti aiuterà).

Ad esempio, la funzione ShowWindow può essere usato per ingrandire una finestra usando l'API Win32. Per ottenere un handle per la finestra creata da SDL, utilizza la funzione SDL_GetWMInfo . La risultante SDL_SysWMinfo struct contiene un campo finestra di tipo HWND. Questo deve essere passato alla funzione ShowWindow insieme al flag SW_MAXIMIZE.

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

Altri suggerimenti

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

Tutte le risposte sembrano obsolete, al giorno d'oggi basta specificare SDL_WINDOW_MAXIMIZED come flag per SDL_CreateWindow .

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

Esistono ulteriori variabili d'ambiente che possono essere impostate per controllare la finestra del display. Sfortunatamente i documenti SDL al momento non sono disponibili, quindi non riesco a cercare ciò di cui hai bisogno.

SDL_FULLSCREEN è l'opzione che stai cercando:

flags |= SDL_FULLSCREEN;
screen = SDL_SetVideoMode(..., flags);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top