typedef void (SDLCALL *SDL_DialogFileCallback)(void *userdata, const char * const *filelist, int filter);
| void * | userdata | コールバックで使用するためにアプリケーションが渡したポインタ |
| const char * const * | filelist | ユーザが選択したファイル |
| int | filter | 選択されたフィルタのインデックス番号 |
詳細は各関数の説明にある.
もし, filelistが:
引数filelistを解放してはならない. コールバックから戻るとき自動的に解放される.
引数filterは選択されたフィルタのインデックス番号, または選択されなかった, または環境などがフィルタ選択に対応していない場合は-1である.
Androidでは, filelistはcontent:// URIである.
これはSDL_IOFromFile()の適切なモードでオープンすることができる.
これはオープンとセーブダイアログのどちらにも適用される.
#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);
}
}