目次 - SDL 3.0 API(機能別) - システムトレイ - SDL_CreateTray

SDL_CreateTray

OSのシステムトレイ(またはそれと同等のもの)にアイコンを生成する

ヘッダ

SDL3/SDL_tray.h

構文

SDL_Tray * SDL_CreateTray(SDL_Surface *icon, const char *tooltip);

引数

SDL_Surface *iconアイコンとして使用するサーフェイス. NULLも可
const char *tooltipマウスカーソルを重ねたとき表示されるツールチップに表示されるUTF-8文字列. 対応していない環境もある. NULLも可

戻り値

(SDL_Tray *) 生成されたトレイオブジェクトを戻す.

詳細

多くの環境では常駐させる必要がない場合はシステムトレイを使用しないことを推奨している. ユーザにインターフェースの乱雑さを感じさせないためにも不要なトレイアイコンの生成は避けること.

トレイアイコンの使用にはビデオサブシステムが必要である.

バージョン

SDL 3.2.0以降

サンプルコード

#include <SDL3/SDL.h>
#include <SDL3/SDL_main.h>

void callback_quit(void *userdata, SDL_TrayEntry *invoker)
{
    SDL_Event e;
    e.type = SDL_EVENT_QUIT;
    SDL_PushEvent(&e);
}

int main(int argc, char *argv[])
{
    SDL_Tray *tray;
    SDL_TrayMenu *menu;
    SDL_TrayEntry *entry;
    SDL_Event e;

    SDL_Init(SDL_INIT_VIDEO);

    // システムトレイにアイコンを生成する
    // 通常はNULLではなくSDL_Surfaceを渡す
    tray = SDL_CreateTray(NULL, "My tray");

    // トレイのコンテキストメニューを生成する
    menu = SDL_CreateTrayMenu(tray);

    // コンテキストメニューのボタンを生成する
    entry = SDL_InsertTrayEntryAt(menu, -1, "終了", SDL_TRAYENTRY_BUTTON);

    // ボタンのコールバックを生成する
    SDL_SetTrayEntryCallback(entry, callback_quit, NULL);

    // メインループを実行する...
    while (SDL_WaitEvent(&e)) {
        if (e.type == SDL_EVENT_QUIT) {
            break;
        }
    }

    // 破棄するのはトレイのみでよい
    // 残りは自動的に破棄される
    SDL_DestroyTray(tray);

    SDL_Quit();

    return 0;
}

関連項目

SDL Wikiへのリンク

SDL_CreateTray - SDL Wiki