SDL_bool SDL_GetWindowWMInfo(SDL_Window* window, SDL_SysWMinfo* info)
window | 情報を求めるウィンドウ |
info | ウィンドウの情報を書き込むSDL_SysWMinfoのポインタ |
#include "SDL.h"
#include "SDL_syswm.h"
int main(int argc, char *argv[]) {
SDL_Window* window;
SDL_SysWMinfo info;
SDL_Init(0);
window = SDL_CreateWindow("", 0, 0, 0, 0, SDL_WINDOW_HIDDEN);
SDL_VERSION(&info.version); /* info構造体をSDLのバージョンで初期化する */
if(SDL_GetWindowWMInfo(window,&info)) { /* この関数は成功のとき真を戻す */
/* 成功 */
const char *subsystem = "不明なシステム!";
switch(info.subsystem) {
case SDL_SYSWM_UNKNOWN: break;
case SDL_SYSWM_WINDOWS: subsystem = "Microsoft Windows(TM)"; break;
case SDL_SYSWM_X11: subsystem = "X Window System"; break;
#if SDL_VERSION_ATLEAST(2, 0, 3)
case SDL_SYSWM_WINRT: subsystem = "WinRT"; break;
#endif
case SDL_SYSWM_DIRECTFB: subsystem = "DirectFB"; break;
case SDL_SYSWM_COCOA: subsystem = "Apple OS X"; break;
case SDL_SYSWM_UIKIT: subsystem = "UIKit"; break;
#if SDL_VERSION_ATLEAST(2, 0, 2)
case SDL_SYSWM_WAYLAND: subsystem = "Wayland"; break;
case SDL_SYSWM_MIR: subsystem = "Mir"; break;
#endif
#if SDL_VERSION_ATLEAST(2, 0, 4)
case SDL_SYSWM_ANDROID: subsystem = "Android"; break;
#endif
#if SDL_VERSION_ATLEAST(2, 0, 5)
case SDL_SYSWM_VIVANTE: subsystem = "Vivante"; break;
#endif
}
SDL_Log("このプログラムは SDL バージョン %d.%d.%d の %s で動作している",
(int)info.version.major,
(int)info.version.minor,
(int)info.version.patch,
subsystem);
} else {
/* 呼び出し失敗 */
SDL_LogError(SDL_LOG_CATEGORY_ERROR, "ウィンドウの情報を得られなかった: %s", SDL_GetError());
}
SDL_DestroyWindow(window);
SDL_Quit();
return 0;
}
SDL_SysWMinfoを定義するためSDL_syswm.hをインクルードする必要がある.
呼び出し側はinfo構造体のバージョンを SDL_version(&info.version)
を使って初期化している必要がある.
するとこの関数は構造体の残りの部分に指定のウィンドウの情報を書き込む.
SDL 2.0.0以降