タイマー付きメッセージボックスもどき

2の付くとこで話題になってたので

msgboxとほぼ同じ引数で呼べます
違いは第二引数が表示秒数なのと、フォーカスボタンの指定が出来ないこと
戻り値は押したボタンに対応したBTN定数です
タイムアップ時はBTN_CANCELが返ります

見た目はこんな感じになる
msgboxt

function msgboxt(message, timeout, buttons = BTN_OK, x = null, y = null)
    hashtbl hButtons
    if buttons and BTN_OK     then hButtons[BTN_OK    ] = "OK"         else hButtons[BTN_OK    ] = ""
    if buttons and BTN_CANCEL then hButtons[BTN_CANCEL] = "キャンセル" else hButtons[BTN_CANCEL] = ""
    if buttons and BTN_YES    then hButtons[BTN_YES   ] = "はい(&Y)"   else hButtons[BTN_YES   ] = ""
    if buttons and BTN_NO     then hButtons[BTN_NO    ] = "いいえ(&N)" else hButtons[BTN_NO    ] = ""
    if buttons and BTN_ABORT  then hButtons[BTN_ABORT ] = "中止(&A)"   else hButtons[BTN_ABORT ] = ""
    if buttons and BTN_RETRY  then hButtons[BTN_RETRY ] = "再試行(&R)" else hButtons[BTN_RETRY ] = ""
    if buttons and BTN_IGNORE then hButtons[BTN_IGNORE] = "無視(&I)"   else hButtons[BTN_IGNORE] = ""

    if chknum(x) and chknum(y) then
        ret = slctbox(SLCT_STR, timeout, x, y, message, hButtons)
    else
        ret = slctbox(SLCT_STR, timeout, message, hButtons)
    endif
    select ret
        case -1, ""
            result = BTN_CANCEL
        default
            for i = 0 to length(hButtons) - 1
                if ret = hButtons[i, HASH_VAL] then
                    result = hButtons[i, HASH_KEY]
                    break
                endif
            next
    selend
fend
広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中