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

SDL_ShowMessageBox

モーダルなメッセージボックスを生成する

構文

int SDL_ShowMessageBox(const SDL_MessageBoxData* messageboxdata, int* buttonid)

引数

messageboxdataタイトル, テキスト, その他のオプションを含むSDL_MessageBoxData
buttonidユーザが押したボタンのIDを代入するポインタ

戻り値

成功のとき0, 失敗のとき負の数のエラーコードを戻す. SDL_GetError()を呼んで詳細を知ることができる.

サンプルコード

#include "SDL.h"

int main(int argc, char *argv[])
{
    const SDL_MessageBoxButtonData buttons[] = {
        { /* .flags, .buttonid, .text */        0, 0, "いいえ" },
        { SDL_MESSAGEBOX_BUTTON_RETURNKEY_DEFAULT, 1, "はい" },
        { SDL_MESSAGEBOX_BUTTON_ESCAPEKEY_DEFAULT, 2, "キャンセル" },
    };
    const SDL_MessageBoxColorScheme colorScheme = {
        { /* .colors (.r, .g, .b) */
            /* [SDL_MESSAGEBOX_COLOR_BACKGROUND] */
            { 255,   0,   0 },
            /* [SDL_MESSAGEBOX_COLOR_TEXT] */
            {   0, 255,   0 },
            /* [SDL_MESSAGEBOX_COLOR_BUTTON_BORDER] */
            { 255, 255,   0 },
            /* [SDL_MESSAGEBOX_COLOR_BUTTON_BACKGROUND] */
            {   0,   0, 255 },
            /* [SDL_MESSAGEBOX_COLOR_BUTTON_SELECTED] */
            { 255,   0, 255 }
        }
    };
    const SDL_MessageBoxData messageboxdata = {
        SDL_MESSAGEBOX_INFORMATION, /* .flags */
        NULL, /* .window */
        "メッセージボックスのサンプル", /* .title */
        "ボタンを選択してください", /* .message */
        SDL_arraysize(buttons), /* .numbuttons */
        buttons, /* .buttons */
        &colorScheme /* .colorScheme */
    };
    int buttonid;
    if (SDL_ShowMessageBox(&messageboxdata, &buttonid) < 0) {
        SDL_Log("メッセージボックスの表示に失敗した");
        return 1;
    }
    if (buttonid == -1) {
        SDL_Log("選択されなかった");
    } else {
       SDL_Log("%sが選択された", buttons[buttonid].text);
    }
    return 0;
}

詳細

この関数は, 親ウィンドウが生成されたスレッド, 親ウィンドウがなければメインスレッドで呼ぶ必要がある. ユーザがボタンを押す, またはメッセージボックスを閉じるまでスレッドの実行は停止される.

バージョン

SDL 2.0.0以降

関連項目(関数)

SDL_ShowSimpleMessageBox

SDL Wikiへのリンク

SDL_ShowMessageBox - SDL Wiki