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以降) |
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);
}
}