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

SDL_WindowEvent

ウィンドウイベントの情報の構造体

フィールド

Uint32typeSDL_WINDOWEVENT
Uint32timestampイベントのタイムスタンプ
Uint32windowID関連のあるウィンドウ
Uint8eventSDL_WindowEventID
Sint32data1イベントによって異なるデータ
Sint32data2イベントによって異なるデータ

サンプルコード

void PrintEvent(const SDL_Event * event)
{
    if (event->type == SDL_WINDOWEVENT) {
        switch (event->window.event) {
        case SDL_WINDOWEVENT_SHOWN:
            SDL_Log("ウィンドウ %d が見えるようになった", event->window.windowID);
            break;
        case SDL_WINDOWEVENT_HIDDEN:
            SDL_Log("ウィンドウ %d が見えないようになった", event->window.windowID);
            break;
        case SDL_WINDOWEVENT_EXPOSED:
            SDL_Log("ウィンドウ %d が現れた", event->window.windowID);
            break;
        case SDL_WINDOWEVENT_MOVED:
            SDL_Log("ウィンドウ %d が %d,%d へ移動した", event->window.windowID, event->window.data1, event->window.data2);
            break;
        case SDL_WINDOWEVENT_RESIZED:
            SDL_Log("ウィンドウ %d の大きさが %dx%d になった", event->window.windowID, event->window.data1, event->window.data2);
            break;
        case SDL_WINDOWEVENT_SIZE_CHANGED:
            SDL_Log("ウィンドウ %d の大きさが %dx%d に変わった", event->window.windowID, event->window.data1, event->window.data2);
            break;
        case SDL_WINDOWEVENT_MINIMIZED:
            SDL_Log("ウィンドウ %d が最小化された", event->window.windowID);
            break;
        case SDL_WINDOWEVENT_MAXIMIZED:
            SDL_Log("ウィンドウ %d が最大化された", event->window.windowID);
            break;
        case SDL_WINDOWEVENT_RESTORED:
            SDL_Log("ウィンドウ %d 通常の大きさと位置になった", event->window.windowID);
            break;
        case SDL_WINDOWEVENT_ENTER:
            SDL_Log("マウスがウィンドウ %d に入った", event->window.windowID);
            break;
        case SDL_WINDOWEVENT_LEAVE:
            SDL_Log("マウスがウィンドウ %d から出た", event->window.windowID);
            break;
        case SDL_WINDOWEVENT_FOCUS_GAINED:
            SDL_Log("ウィンドウ %d がキーボードフォーカスを得た", event->window.windowID);
            break;
        case SDL_WINDOWEVENT_FOCUS_LOST:
            SDL_Log("ウィンドウ %d がキーボードフォーカスを失った", event->window.windowID);
            break;
        case SDL_WINDOWEVENT_CLOSE:
            SDL_Log("ウィンドウ %d が閉じた", event->window.windowID);
            break;
#if SDL_VERSION_ATLEAST(2, 0, 5)
        case SDL_WINDOWEVENT_TAKE_FOCUS:
            SDL_Log("ウィンドウ %d がフォーカスを与えられた", event->window.windowID);
            break;
        case SDL_WINDOWEVENT_HIT_TEST:
            SDL_Log("ウィンドウ %d が特殊なヒットテストを行った", event->window.windowID);
            break;
#endif
        default:
            SDL_Log("ウィンドウ %d の不明なイベント %d", event->window.windowID, event->window.event);
            break;
        }
    }
}

詳細

SDL_WindowEventSDL_Eventのメンバの1つで, イベントのtypeがSDL_WINDOWEVENTの場合に使う. イベントのwindowフィールドを経由してアクセスする必要がある.

関連項目(列挙体)

SDL_EventType
SDL_WindowEventID

SDL Wikiへのリンク

SDL_WindowEvent - SDL Wiki