秀丸のマクロを作っていると、「メッセージボックス」を出すことがよくあります。
情報の告示や、マクロのデバッグ時など、メッセージボックスは最も頻繁に利用される機能のひとつでしょう。
さて、
メッセージボックスは、一度表示すると、ボタンを押すまでは閉じないモノだと思われているかもしれませんが、
そんなことはありません。
この自動終了式のメッセージボックスは、ボタンを押さなかったとしても、指定した時間で終了する、
そんな特殊なメッセージボックスです。
秀丸のマクロを見れば、わかることなのですが、秀丸マクロ経由に限らず
この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ファイルは自由に使用してください。
パブリックドメインです。
HmTimerMessageBox.exeについては、修正BSDライセンスです。
HmTimerMessageBoxのソースはGithubに上がっています。