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

# SDL_GetWindowWMInfo

ウィンドウのドライバ固有の情報を得る

## 構文

`SDL_bool SDL_GetWindowWMInfo(SDL_Window* window, SDL_SysWMinfo* info)`

## 引数

window | 情報を求めるウィンドウ
info | ウィンドウの情報を書き込むSDL_SysWMinfoのポインタ (詳細を参照すること)

## 戻り値

この関数が実装されていて, かつinfo構造体のバージョンが正しければSDL_TRUE, 情報が得られなければSDL_FALSEを戻す. SDL_GetError()を呼んで詳細を知ることができる.

## サンプルコード

``

    #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
        }

        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バージョンが初期化されている必要があり, それがあればウィンドウの情報がサンプルコードのように得られる.

## バージョン

SDL 2.0.0以降

## SDL Wikiへのリンク

SDL_GetWindowWMInfo - SDL Wiki