目次 - SDL 3.0 API(機能別) - ファイルダイアログ - SDL_DialogFileCallback

SDL_DialogFileCallback

ファイルダイアログ関数で使用するコールバックの型

ヘッダ

SDL3/SDL_dialog.h

構文

typedef void (SDLCALL *SDL_DialogFileCallback)(void *userdata, const char * const *filelist, int filter);

引数

void *userdataコールバックで使用するためにアプリケーションが渡したポインタ
const char * const *filelistユーザが選択したファイル
intfilter選択されたフィルタのインデックス番号

詳細

詳細は各関数の説明にある.

もし, filelistが:

引数filelistを解放してはならない. コールバックから戻るとき自動的に解放される.

引数filterは選択されたフィルタのインデックス番号, または選択されなかった, または環境などがフィルタ選択に対応していない場合は-1である.

Androidでは, filelistはcontent:// URIである. これはSDL_IOFromFile()の適切なモードでオープンすることができる. これはオープンとセーブダイアログのどちらにも適用される.

バージョン

SDL 3.2.0以降

サンプルコード

#include <SDL3/SDL.h>

static const SDL_DialogFileFilter filters[] = {
    { "PNG images",  "png" },
    { "JPEG images", "jpg;jpeg" },
    { "All images",  "png;jpg;jpeg" },
    { "All files",   "*" }
};

static void SDLCALL callback(void* userdata, const char* const* filelist, int filter)
{
    if (!filelist) {
        SDL_Log("エラーが発生した: %s", SDL_GetError());
        return;
    } else if (!*filelist) {
        SDL_Log("ユーザはファイルを選択しなかった.");
        SDL_Log("多くの場合はダイアログをキャンセルした.");
        return;
    }

    while (*filelist) {
        SDL_Log("選択したファイルのフルパス名: '%s'", *filelist);
        filelist++;
    }

    if (filter < 0) {
        SDL_Log("システムがファイルのフィルタに対応していない, "
                "またはユーザがフィルタを使用しなかった.");
    } else if (filter < SDL_arraysize(filters)) {
        SDL_Log("ユーザが選択したフィルタは'%s' (%s).",
                filters[filter].pattern, filters[filter].name);
    }
}

関連項目

SDL Wikiへのリンク

SDL_DialogFileCallback - SDL Wiki