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

SDL_ShowOpenFileDialog

ユーザにファイルシステムのファイルを選択させるダイアログを表示する

ヘッダ

SDL3/SDL_dialog.h

構文

void SDL_ShowOpenFileDialog(SDL_DialogFileCallback callback, void *userdata, SDL_Window *window, const SDL_DialogFileFilter *filters, int nfilters, const char *default_location, bool allow_many);

引数

SDL_DialogFileCallbackcallbackユーザがファイルを選択して決定した, またはダイアログをキャンセルした, またはエラーが発生したとき呼ばれる関数へのポインタ
void *userdataコールバック関数が呼ばれたとき渡せるポインタ
SDL_Window *windowこのウィンドウに対してモーダルにする. NULLも可. 全ての環境が対応しているとは限らない
const SDL_DialogFileFilter *filtersフィルタの一覧. NULLも可. 使用例はSDL_DialogFileFilterのサンプルコードを参照すること. 全ての環境がこのオプションに対応しているとは限らず, 対応している環境でもユーザはこのフィルタを無視できるのことに注意すること. NULLでないとき, 少なくともコールバック関数が呼ばれるまで有効でなければならない
intnfiltersフィルタの数. filtersがNULLのとき無視される
const char *default_locationダイアログが開いたときのデフォルトのフォルダまたはファイル. NULLも可. 全ての環境がこのオプションに対応しているとは限らない
boolallow_many真のときユーザは複数の項目を選択できる. 全ての環境がこのオプションに対応しているとは限らない

詳細

これは非同期の関数である. この関数からはすぐに戻り, 結果はコールバックに渡される.

コールバックはユーザが選択したNUL終端のファイルの一覧と共に呼ばれる. 一覧は, ユーザがダイアログをキャンセルした場合は空になり, エラーが発生した場合はNULLになる.

コールバックは設定したスレッドとは別のスレッドから呼ばれる場合もあるので注意すること.

環境によってはユーザは存在しないパスを選択できる.

Linuxでは, ダイアログはイベントループ処理のためにDBusが必要なXDGポータルを必要とする. SDLイベントハンドルを使用しないアプリケーションはメインループでSDL_PumpEventsを呼ぶ必要がある.

スレッドセーフ

この関数を呼べるのはメインスレッドのみである. コールバックはOSの制約により同じスレッドと別のスレッドの両方から呼ばれることがある.

バージョン

SDL 3.2.0以降

関連項目

SDL Wikiへのリンク

SDL_ShowOpenFileDialog - SDL Wiki