サンプルコード

Autoit|メッセージボックス(MsgBox)の種類

Autoit でプログラムやツールを作成する際に、メッセージボックス(MsgBox)は、よく使うものです。

MsgBox にはたくさんの種類があり、MsgBox を使用する際は、各場所に合ったものを使用する必要があります。

今回は、メッセージボックス(MsgBox)の種類と組み合わせ、詳細を紹介します。

MsgBox の種類

MsgBox ( flag, “title”, “text” [, timeout [, hwnd]] )

まず次の画像を見てみましょう。

左上にパラメーター「flag」を表示しています。

MsgBox の種類
MsgBox の種類(画像クリックで拡大)

MsgBox は 17 種類あり、各フラグで表示されるボタン、アイコン、表示方法が違ってきます。

MsgBox は 17 種類ですが、各フラグは組み合わせることができます。

例えばフラグ「256」の場合、”2番目のボタンがデフォルトボタンになります”となっていますが、おそらく初めての方は意味が分からないと思います。

2番目のボタンがデフォルトボタンになるという意味は、ボタンが複数ある場合に2番目のボタンがフォーカス(選択された状態)され、MsgBox が表示された際に、そのまま Enter を押せば2番目のボタンが押されるようになります。

MsgBox 組み合わせ例

先ほど MsgBox は各フラグを組み合わせることができますと言いました。

次の例を見てみましょう。

  • MsgBox(256, 256, “2番目のボタンがデフォルトボタンになります。”)
  • MsgBox(256 + 2, “256 + 2”, “2番目のボタンがデフォルトボタンになります。”)
MsgBox組み合わせ例
MsgBox組み合わせ例

「2番目のボタンがデフォルトボタンになります」と「中止, 再試行, 無視」を組み合わせたものができます。

画像を見ると2番目のボタンにフォーカスされていることが分かります。

次はフラグを3つ組み合わせたものです。

フラグは「256 + 2 + 262144」という形式でもいいし、「262144」のように3つ足した数を記述しても同じ動作をします。

  • MsgBox(256 + 2 + 262144, “256 + 2 + 262144”, “2番目のボタンがデフォルトボタンになります。”)
  • MsgBox(262144, “256 + 2 + 262144”, “2番目のボタンがデフォルトボタンになります。”)
MsgBox組み合わせ例2
MsgBox組み合わせ例2

こちらは中止, 再試行, 無視の3つのボタンの表示、2番目のボタンにフォーカス、さらにどのウィンドウよりもトップに表示されます。

MsgBox組み合わせ例3 サンプルコード

#include <ButtonConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> Opt("GUIOnEventMode", 1) $Form1 = GUICreate("Form1", 236, 240) GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close") $Button1 = GUICtrlCreateButton("Button1", 8, 8, 219, 65) GUICtrlSetOnEvent(-1, "Button1Click") $Button2 = GUICtrlCreateButton("Button2", 8, 80, 219, 73) GUICtrlSetOnEvent(-1, "Button2Click") $Button3 = GUICtrlCreateButton("Button3", 8, 160, 219, 73) GUICtrlSetOnEvent(-1, "Button3Click") GUISetState(@SW_SHOW) While 1 Sleep(100) WEnd Func Button1Click() MsgBox(0, "", "Button1 をクリックしました。") EndFunc ;==>Button1Click Func Button2Click() MsgBox(16, "エラー", "あなたがクリックしたのは Button1 ではありません!") EndFunc ;==>Button2Click Func Button3Click() MsgBox(16 + 32 + 48 + 64, "16 + 32 + 48 + 64", "フラグを4つ組み合わせています。" & @CRLF & "アイコンのあるフラグは同時に指定できないことが分かります。") EndFunc ;==>Button3Click Func Form1Close() Exit EndFunc ;==>Form1Close
MsgBox組み合わせ例2
MsgBox組み合わせ例3(画像クリックで拡大)

MsgBox オプション

MsgBox ( flag, “title”, “text” [, timeout [, hwnd]] )

MsgBox のオプションには、タイムアウトと親ウィンドウの指定があります。

次のコードは、タイムアウトを「5秒」に設定し、親ウィンドウを「$Form1」に指定しています。

MsgBox(0, “”, “Button1 をクリックしました。”, 5, $Form1); タイムアウトは「0」を指定すると無制限になります。

動画を見ると分かるように、MsgBox は5秒経つと自動で終了され、MsgBox が表示されたまま親ウィンドウをクリックすると、MsgBox が点滅します。

親ウィンドウを指定すると、MsgBox が表示されると同時に、親ウィンドウが無効になり、MsgBox が消えるまで親ウィンドウを終了することができません。

通常は親ウィンドウを指定しておくことをおすすめします。

Autoit MsgBoxサンプル動画

MsgBox の大きさや、文字のサイズは指定することはできません。

MsgBox の表示される位置は、常に画面の真ん中です。

MsgBox の大きさや、文字のサイズ、表示位置を変えたいと思うなら、ご自身で MsgBox と同様に動作するウィンドウを作成して実現することもできます。

コメント