ウィンドウの作成と破棄

2021年8月7日

SDLでウィンドウの作成と破棄をするには、「SDL_CreateWindow関数」と「SDL_DestroyWindow関数」を使用します。

SDL_CreateWindow関数

ウィンドウを作成します。

宣言

SDL_Window* SDL_CreateWindow( const char* title, int x, int y, int w, int h, Uint32 flags );

引数

titleウィンドウのタイトルです。
xウィンドウのX座標です。基点はウィンドウの左上になります。
この引数にSDL_WINDOWPOS_CENTEREDを指定すると、画面中央にウィンドウを配置できます。
yウィンドウのY座標です。 基点はウィンドウの左上になります。
この引数にSDL_WINDOWPOS_CENTEREDを指定すると、画面中央にウィンドウを配置できます。
wウィンドウの幅です。
hウィンドウの高さです。
flagsウィンドウの状態を表す各フラグの論理和です。
この引数へ指定した値の状態でウィンドウを作成します。また、この設定が不要な場合には、0を指定します。
各フラグはSDL_WindowFlags型で定義されています。

戻り値

作成に成功すると「ウィンドウのアドレス」を返し、失敗すると「NULL」を返します。

SDL_DestroyWindow関数

ウィンドウを破棄します。

宣言

void SDL_DestroyWindow( SDL_Window* window );

引数

window破棄するウィンドウのアドレスです。

サンプルプログラム

#include <SDL.h>

int main( int argc, char* argv[] )
{
    if ( SDL_Init( SDL_INIT_VIDEO ) != 0 )
    {
        SDL_Log( u8"SDLの初期化処理に失敗しました。エラーメッセージ: %s", SDL_GetError() );
        return -1;
    }

    auto window = SDL_CreateWindow( 
        u8"サンプル", 
        SDL_WINDOWPOS_CENTERED, 
        SDL_WINDOWPOS_CENTERED, 
        1280, 
        720, 
        0 
    );

    if ( window == nullptr )
    {
        SDL_Log( u8"ウィンドウの作成に失敗しました。エラーメッセージ: %s", SDL_GetError() );
        SDL_Quit();
        return -1;
    }
    
    SDL_Delay( 3000 );
    
    SDL_DestroyWindow( window );
    SDL_Quit();

    return 0;
}

参考ページ