目次 - 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_TESTSDL_HITTEST_NORMALでは行われなかったヒットテストが行われた (SDL 2.0.5以降)
SDL_WINDOWEVENT_ICCPROF_CHANGEDウィンドウが表示されているディスプレイのICCプロファイルが変わった (SDL 2.0.18以降)
SDL_WINDOWEVENT_DISPLAY_CHANGEDウィンドウがディスプレイdata1に移動した (SDL 2.0.18以降)

サンプルコード

#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