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

# SDL_WindowEventID

ウィンドウイベントの列挙体

## 値

SDL_WINDOWEVENT_NONE | (この値が使われることはない)
SDL_WINDOWEVENT_SHOWN | ウィンドウが見えるようになった
SDL_WINDOWEVENT_HIDDEN | ウィンドウが見えないようになった
SDL_WINDOWEVENT_EXPOSED | ウィンドウが現れた. 再描画する必要がある
SDL_WINDOWEVENT_MOVED | ウィンドウがdata1からdata2へ移動した
SDL_WINDOWEVENT_RESIZED | ウィンドウの大きさがdata1×data2になった. このイベントは常にSDL_WINDOWEVENT_SIZE_CHANGEDの前に発生する
SDL_WINDOWEVENT_SIZE_CHANGED | ウィンドウの大きさが変わった. APIの呼び出しの結果とユーザが大きさを変えた場合の両方がある. このイベントは, 大きさが外部の要因, 例えばユーザやウィンドウマネージャで変えられた場合, SDL_WINDOWEVENT_RESIZEDイベントの後に発生する.
SDL_WINDOWEVENT_MINIMIZED | ウィンドウが最小化された
SDL_WINDOWEVENT_MAXIMIZED | ウィンドウが最大化された
SDL_WINDOWEVENT_RESTORED | ウィンドウが通常の大きさと位置になった
SDL_WINDOWEVENT_ENTER | ウィンドウがマウスのフォーカスを得た
SDL_WINDOWEVENT_LEAVE | ウィンドウがマウスのフォーカスを失った
SDL_WINDOWEVENT_FOCUS_GAINED | ウィンドウがキーボードのフォーカスを得た
SDL_WINDOWEVENT_FOCUS_LOST | ウィンドウがキーボードのフォーカスを失った
SDL_WINDOWEVENT_CLOSE | ウィンドウマネージャが閉じることを要求した
SDL_WINDOWEVENT_TAKE_FOCUS | ウィンドウがフォーカスを与えられた (自分自身またはサブウィンドウにSDL_SetWindowInputFocus()するか, 無視する必要がある) (SDL 2.0.5以降)
SDL_WINDOWEVENT_HIT_TEST | SDL_HITTEST_NORMALでは行われなかったヒットテストが行われた (SDL 2.0.5以降)

## サンプルコード

``

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

    int main(int, char**)  {
      int width = 640;
      int height = 480;

      if (SDL_Init(SDL_INIT_VIDEO) != 0)  {
        return 1;
      }
      atexit(SDL_Quit);

      SDL_Window* window = SDL_CreateWindow(
        "Example", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED,
        width, height, SDL_WINDOW_RESIZABLE
      );
      Uint32 windowID = SDL_GetWindowID(window);

      while (1)  {
        SDL_Event event;
        while (SDL_PollEvent(&event))  {
          switch (event.type)  {

            case SDL_WINDOWEVENT:  {
              if (event.window.windowID == windowID)  {
                switch (event.window.event)  {

                  case SDL_WINDOWEVENT_SIZE_CHANGED:  {
                    width = event.window.data1;
                    height = event.window.data2;
                    break;
                  }

                  case SDL_WINDOWEVENT_CLOSE:  {
                    event.type = SDL_QUIT;
                    SDL_PushEvent(&event);
                    break;
                  }

                }
              }
              break;
            }

            case SDL_QUIT:  {
              return 0;
            }

            /* ... */

          }
        }

        /* ... */

        SDL_Delay(1);
      }
    }

## 関連項目(構造体)

SDL_WindowEvent

## 関連項目(関数)

SDL_GetWindowFromID
SDL_GetWindowID

## SDL Wikiへのリンク

SDL_WindowEventID - SDL Wiki