質問
アプリケーションウィンドウを最大化するようにSDLに指示するにはどうすればよいですか
これらのフラグを使用してウィンドウを作成しています:SDL_OPENGL | SDL_HWSURFACE | SDL_DOUBLEBUF | SDL_RESIZABLE。
解決
この機能は、SDL_RESIZABLEフラグを使用するときにウィンドウマネージャーによって制御されます。 SDLを使用してウィンドウを最大化することをシミュレートするには、まず、最大化したときにウィンドウが占有するサイズを決定する必要があります。次に、 SDL_SetVideoMode を呼び出します。 「http://libsdl.org/cgi/docwiki.cgi/SDL_envvars」rel = "nofollow noreferrer"> SDL_VIDEO_WINDOW_POS環境変数。
最大化ボタンをクリックしたようにウィンドウを本当に最大化する必要がある場合は、基礎となるウィンドウマネージャーに直接アクセスする必要があります(つまり、SDLは役に立ちません)。
たとえば、 ShowWindow 関数Win32 APIを使用してウィンドウを最大化するために使用できます。 SDLによって作成されたウィンドウへのハンドルを取得するには、 SDL_GetWMInfo 関数を使用します。結果の SDL_SysWMinfo 構造体には、 window フィールドが含まれます。タイプ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);