アプリケーション ウィンドウを最大化するには、SDL にどのように指示すればよいですか?
これらのフラグでウィンドウを作成しています: SDL_OPENGL | SDL_HWSURFACE | SDL_DOUBLEBUF | SDL_RESIZABLE。
アプリケーション ウィンドウを最大化するには、SDL にどのように指示すればよいですか?
これらのフラグでウィンドウを作成しています: SDL_OPENGL | SDL_HWSURFACE | SDL_DOUBLEBUF | SDL_RESIZABLE。
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_RESIZABLE フラグを使用すると、この機能はウィンドウ マネージャによって制御されます。SDL でウィンドウの最大化をシミュレートするには、まず最大化したときにウィンドウが占有するサイズを決定する必要があります。次に、 SDL_VIDEO_WINDOW_POS 環境変数でウィンドウを配置した後、このサイズでSDL_SetVideoModeを呼び出します。
最大化ボタンをクリックしたかのようにウィンドウを最大化する必要がある場合は、下層のウィンドウ マネージャに直接アクセスする必要があります (つまり、SDL は役に立ちません)。
たとえば、ShowWindow関数を使用すると、Win32 API を使用してウィンドウを最大化できます。SDL によって作成されたウィンドウへのハンドルを取得するには、SDL_GetWMInfo関数を使用します。結果のSDL_SysWMinfo構造体には、HWND 型のウィンドウフィールドが含まれます。これは、SW_MAXIMIZE フラグと共に ShowWindow 関数に渡す必要があります。
SDL_SysWMinfo info;
SDL_VERSION(&info.version);
SDL_GetWMInfo(&info);
ShowWindow(info.window, SW_MAXIMIZE);
表示ウィンドウを制御するために設定できる追加の環境変数があります。残念ながら、sdl ドキュメントは現在ダウンしているため、必要なものを調べることができません。
SDL_FULLSCREEN はあなたが探しているオプションです:
flags |= SDL_FULLSCREEN;
screen = SDL_SetVideoMode(..., flags);