目次 - API(機能別) - ディスプレイとウィンドウ - SDL_CreateWindow

SDL_CreateWindow

位置, 大きさ, フラグを指定してウィンドウを生成する

構文

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

引数

titleUTF-8文字列のウィンドウのタイトル
xウィンドウのスクリーン座標系のX座標, SDL_WINDOWPOS_CENTERED, または SDL_WINDOWPOS_UNDEFINED
yウィンドウのスクリーン座標系のY座標, SDL_WINDOWPOS_CENTERED, または SDL_WINDOWPOS_UNDEFINED
wウィンドウのスクリーン座標系の幅
hウィンドウのスクリーン座標系の高さ
flags0 または 1つ以上のSDL_WindowFlags列挙体の論理和

戻り値

生成されたウィンドウを戻す. 失敗のときNULLを戻す. SDL_GetError()を呼んで詳細を知ることができる.

サンプルコード

// サンプルプログラム:
// SDL2でアプリケーションウィンドウを生成する

#include "SDL.h"
#include <stdio.h>

int main(int argc, char* argv[]) {

    SDL_Window *window;                    // ポインタを宣言する

    SDL_Init(SDL_INIT_VIDEO);              // SDL2を初期化する

    // 次の設定でアプリケーションウィンドウを生成する:
    window = SDL_CreateWindow(
        "An SDL2 window",                  // ウィンドウのタイトル
        SDL_WINDOWPOS_UNDEFINED,           // X座標の初期値
        SDL_WINDOWPOS_UNDEFINED,           // Y座標の初期値
        640,                               // 幅のピクセル数
        480,                               // 高さのピクセル数
        SDL_WINDOW_OPENGL                  // フラグ
    );

    // ウィンドウの生成に成功したかチェックする
    if (window == NULL) {
        // ここを通ったならばウィンドウを生成できなかった...
        printf("ウィンドウを生成できなかった: %s\n", SDL_GetError());
        return 1;
    }

    // ウィンドウが開いた: ここでプログラムループに入る (SDL_PollEvent()を参照すること)

    SDL_Delay(3000);  // 例として3000ミリ秒間停止する

    // ウィンドウを閉じて破棄する
    SDL_DestroyWindow(window);

    // 終了処理
    SDL_Quit();
    return 0;
}

詳細

SDL_CreateWindow()ではSDL_WINDOW_SHOWNは無視される. SDL_WindowはSDL_WINDOW_HIDDENが設定されない限り表示される. SDL_WINDOW_SHOWNはSDL_GetWindowFlags()で問い合わせたとき使われる.

AppleのOS Xでは, Info.plistのNSHighResolutionCapableプロパティは必ずYESでなければならない. そうしなければ高DPI OpenGL キャンバスを受信できない.

もし高DPIに対応した環境(iOSやOS X)でSDL_WINDOW_ALLOW_HIGHDPIを指定してウィンドウを生成した場合ならば, スクリーン座標系のウィンドウサイズは, ピクセル数のウィンドウサイズと異なる場合がある. SDL_GL_GetDrawableSize()またはSDL_GetRendererOutputSize()でピクセル数のクライアントサイズを得ることができる.

フルスクリーンの設定をした場合, 幅と高さの引数であるwhは使われない. しかし, 不正なサイズの引数(例えば大きすぎる)の場合は失敗する. 全ての環境でのウィンドウサイズの事実上の限界は16384×16384である.

バージョン

SDL 2.0.0以降

関連項目(関数)

SDL_CreateWindowFrom
SDL_DestroyWindow

SDL Wikiへのリンク

SDL_CreateWindow - SDL Wiki