秀丸エディタ・自動でも終了するメッセージボックス

概要

秀丸のマクロを作っていると、「メッセージボックス」を出すことがよくあります。

情報の告示や、マクロのデバッグ時など、メッセージボックスは最も頻繁に利用される機能のひとつでしょう。

さて、
メッセージボックスは、一度表示すると、ボタンを押すまでは閉じないモノだと思われているかもしれませんが、
そんなことはありません。

PICTURE

この自動終了式のメッセージボックスは、ボタンを押さなかったとしても、指定した時間で終了する
そんな特殊なメッセージボックスです。

ダウンロード

更新日 2017/12/12
HmTimerMessageBox.zip ver 1.001

動作環境

  • 秀丸 ver7.00以上

インストール

  • HmTimerMessageBox.zipを解凍する。
  • HmTimerMessageBox.exeとHmTimerMessageBox.macを適当な場所にコピー。
  • 秀丸に適当に登録して、マクロを実行してみる。

HmTimerMessageBox.exeの単独での使い方

秀丸のマクロを見れば、わかることなのですが、秀丸マクロ経由に限らず
このHmTimerMessageBox.exeは単独でも使えます。

HmTimerMessageBox.exeのコマンド例

    ① HmTimerMessageBox.exe "本文だけあれば最低限は表示される"
    
    
    ② HmTimerMessageBox.exe "本文はこれこれこれ" "次はタイトルだ!!"
    
    
    ③ HmTimerMessageBox.exe "本文はこれこれこれ" "次はタイトルだ!!" 34
       // 34 というのは、ボタンのパターンやアイコンの種類、などなど。
       // HmTimerMessageBoxを見ればわかりますが、
       // #MB_ICONQUESTION(=0x20=32)と、#MB_ABORTRETRYIGNORE(=0x2=2)で、合計34です。
       // マクロ内では16進数で表記されており、ビットOR演算子を使って複数の状態を表現しています。
       // (win32のC/C++プログラムでよくみられる手法です)
    
    ④ HmTimerMessageBox.exe "本文はこれこれこれ" "次はタイトルだ!!" 54 5000
       // 最後の5000というのは、5000ミリ秒(すなわち5秒)のこと。
    
    

マクロ上でのソース例

    call HmDclreMessagePrm;
    call HmTimerMessageBox "数秒で自動で閉じるダイアログ", "自動で閉じるダイアログ",
                         (#MB_ABORTRETRYIGNORE|#MB_ICONINFORMATION|#MB_DEFBUTTON2), 4000;
    
    if (##return == #IDTIMEOUT) {
      message("未選択のまま時間ぎれ");
    }
    
    if (##return == #IDRETRY) {
      message("再トライを選択しました");
    }
    
    if (##return == #IDCANCEL) { // 実際には「#MB_ABORTRETRYIGNORE」では、このようなボタンがくることはない。
      message("キャンセルボタンを選択しました");
    }
    
    
    endmacro;
    

HmTimerMessageBox.macとは

  • HmDclreMessagePrm関数

    グローバル定数的なものを定義して、ダイアログボックスのオプションを使いやすくしてます。

  • HmTimerMessageBox関数

    実際にダイアログを表示するための関数です。

ライセンス等

  • HmTimerMessageBox.mac

    添付されている、HmTimerMessageBox.macファイルは自由に使用してください。
    パブリックドメインです。

  • HmTimerMessageBox.exe

    HmTimerMessageBox.exeについては、修正BSDライセンスです。
    HmTimerMessageBoxのソースはGithubに上がっています。

    (※ Githubでリポジトリの「サブディレクトリ」だけをダウンロードする簡単な方法は、こちら)